索引的概念
索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址,使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到改行数据对应的物理地址然后访问相应的数据,因此能加快数据库的查询数据,索引是表中一列或者若干列植排序的方法,建立索引的目的是加快对表中记录的查询或排序。总结起来索引就是一种帮助系统更快查找信息的数据。
索引的作用
设置了合适的索引之后,数据库利用各种快速定位技术,能够大大加快查询速度,这是创建索引的最主要的原因。当表很大或查询涉及到多个表时,使用索引可以成千上万倍地提高查询速度。
可以降低数据库的IO成本,并且索引还可以降低数据库的排序成本。
通过创建唯一性索引,可以保证数据表中每一行数据的唯一性。
可以加快表与表之间的连接。
在使用分组和排序时,可大大减少分组和排序的时间。
建立索引在搜索和恢复数据库中的数据时能显著提高性能。
索引的副作用
索引需要占用额外的磁盘空间
更改数据会花费更多时间,因为索引也会随之变动
创建索引的原则依据
表的主键、外键必须有索引
记录数超过 300 行的表应该有索引
经常与其他表进行连接的表,在连接字段上应该建立
经常出现在where子句中的字段,特别是大表的字段应该建立索引
索引应该建在选择性高的字段上
索引唯一性太差的字段,不适合建立索引
更新太频繁地字段,不适合创建索引
索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引
索引的分类
普通索引(Basic Index):没有特殊限制,单纯为了加速查询速度。
唯一索引(Unique Index):索引的键值必须唯一,除了加速查询外还能保证数据的唯一性。
主键索引(Primary Key Index):特殊的唯一索引,每个表只能有一个,不允许为空,并决定了聚集索引的顺序。
组合索引(单列索引与多列索引)
全文索引(Full-text Index):针对文本列的特殊索引,用于对文本内容进行全文搜索。
注:唯一索引和主键索引默认创建。