首页 > 代码库 > 索引介绍

索引介绍

索引是对数据库表中一列或多列的值进行排序的一种结构,换句话说用于定位相同字段的一种标识符,其就相当于图书的目录。

当sql语句在执行查询操作的时候,有两种搜索方式。第一种搜索信息方式是全表搜索,第二种根据索引,找到符合查询条件的索引值,再通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。

建立索引的优点

  • 1.大大加快数据的检索速度;
  • 2.创建唯一性索引,保证数据库表中每一行数据的唯一性;
  • 3.加速表和表之间的连接;
  • 4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。

索引的缺点

  • 1.索引需要占物理空间。
  • 2.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。

索引的设计原则:

  • 提高查询语句的效率,减慢了DML语句的速度。
  • 在全表扫描和索引之间权衡。
  • 能够使用组合索引的则尽量使用组合索引。
  • 对于大表,尽量利用local的分区索引。

索引使用的一些具体规则:

  • 在哪些列上建立索引:
    1. Where字局中引用的列
    2. Join中利用的列
    3. 在子表的FK上建立索引(防止对父表操作时锁住子表)
  • 在哪些列上不要建立索引:
    1. 经常有DML操作
    2. 排它性小
    3. 不建议表上索引超过5个
  • 索引不起作用的情况:
    1. 存在数据类型隐形转换
    2. 列上有数学运算
    3. 使用不等于(< >)运算
    4. 使用substr字符串函数
    5. %通配符在第一个字符
    6. 字符串连接(||)
  • 删除不使用的索引
  • 定期重建大量删除操作的索引

(备注知识)

对于SQL语言,有两个组成部分:
DML(data manipulation language):它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言。

DDL(data definition language):DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用。

索引介绍