Mysql和Oracle索引简介

数据库索引详解

  • Mysql和Oracle索引简介
    • 什么是索引
    • 建立索引的有缺点:
            • 优点:
          • 缺点:
    • 索引类型
      • 创建索引和删除索引
            • 普通索引
          • 唯一索引
          • 主键
          • 删除索引

Mysql和Oracle索引简介

本文主要解释了什么是索引,索引有什么作用以及为什么需要创建索引;并且介绍Mysql和Oracle的索引类型以及如何创建索引和删除索引;

什么是索引

索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。 索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引的方式与您使用书籍中的索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行。 在数据库关系图中,您可以在选定表的“索引/键”属性页中创建、编辑或删除每个索引类型。当保存索引所附加到的表,或保存该表所在的关系图时,索引将保存在数据库中。

建立索引的有缺点:

优点:
  1. 可以加快数据的检索速度;
  2. 创建唯一性索引,保证数据库表中每一行数据的唯一性;
  3. 加速表和表之间的连接;
  4. 在使用分组和排序子句进行数据检索时,可以显著减少查询中分组
缺点:
  1. 索引需要占用数据表以外的物理存储空间
  2. 创建索引和维护索引要花费一定的时间
  3. 当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。

索引类型

  1. 单列索引 单列索引包含:普通索引(normal) 唯一索引(unique) 主键索引(primary key)
    1.1 normal: MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。
    1.2 unique: 唯一索引:索引列中的值必须是唯一的,但是允许为空值
    1.3 primary key: 是一种特殊的唯一索引,不允许有空值。
  2. 组合索引
    在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀集合
  3. 全文索引
    全文索引,只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引
  4. 空间索引
     空间索引是对空间数据类型的字段建立的索引,MySQL中的空间数据类型有四种,GEOMETRY、POINT、LINESTRING、POLYGON。在创建空间索引时,使用SPATIAL关键字。要求,引擎为MyISAM,创建空间索引的列,必须将其声明为NOT NULL。

创建索引和删除索引

普通索引

ALTER TABLE 表名 ADD INDEX 索引名称 (列名)

唯一索引

ALTER TABLE 表名 ADD UNIQUE INDEX 索引名 (列名)

主键

ALTER TABLE 表名 ADD PRIMARY KEY (列名)

删除索引

主键是唯一的就这样就行了
ALTER TABLE [表名] DROP PRIMARY KEY;
注意:当主键带有自增约束的时候需要移除自增约束,然后才能删除主键
删除其他索引
ALTER TABLE [表名] DROP INDEX [索引名]

你可能感兴趣的:(数据库)