索引介绍
索引是对数据库表中一列或多列的值进行排序的一种结构,换句话说用于定位相同字段的一种标识符,其就相当于图书的目录。
当sql语句在执行查询操作的时候,有两种搜索方式。第一种搜索信息方式是全表搜索,第二种根据索引,找到符合查询条件的索引值,再通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。
建立索引的优点
- 1.大大加快数据的检索速度;
- 2.创建唯一性索引,保证数据库表中每一行数据的唯一性;
- 3.加速表和表之间的连接;
- 4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
索引的缺点
- 1.索引需要占物理空间。
- 2.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
索引的设计原则:
- 提高查询语句的效率,减慢了DML语句的速度。
- 在全表扫描和索引之间权衡。
- 能够使用组合索引的则尽量使用组合索引。
- 对于大表,尽量利用local的分区索引。
索引使用的一些具体规则:
- 在哪些列上建立索引:
- Where字局中引用的列
- Join中利用的列
- 在子表的FK上建立索引(防止对父表操作时锁住子表)
- 在哪些列上不要建立索引:
- 经常有DML操作
- 排它性小
- 不建议表上索引超过5个
- 索引不起作用的情况:
- 存在数据类型隐形转换
- 列上有数学运算
- 使用不等于(< >)运算
- 使用substr字符串函数
- %通配符在第一个字符
- 字符串连接(||)
- 删除不使用的索引
- 定期重建大量删除操作的索引
(备注知识)
对于SQL语言,有两个组成部分:
DML(data manipulation language):它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言。
DDL(data definition language):DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用。