目录
一、索引的分类
1、按存储形式:
1)B-TREE索引:
2)位图索引:
3)反向键索引:
4)基于函数的索引:
2、按唯一性:
1)唯一索引:
3、按列的个数:
1)单列索引:
2)复合索引(也称为联合索引):
二、索引的优缺点
1、优点:
2、缺点:
三、索引跟主键的区别
四、确认索引用没用上
五、一般会在什么情况下加索引
六、索引创建
七、索引什么情况下会失效
一、索引的分类
1、按存储形式:
即索引中存储的内容不同。
1)B-TREE索引:
索引列原始数据+ROWID,工作中最常见、使用范围最广的索引,列基数比较大的时候使用(行业、身高)。
2)位图索引:
位图+ROWID,列基数比较小的时候使用(性别、婚姻状况)。
3)反向键索引:
索引列原始数据的反向存储+ROWID,为防止B-TREE索引在某叶上数据量占比过高而使用的一种索引。
4)基于函数的索引:
将索引列原始数据经函数处理后存储+ROWID。
2、按唯一性:
索引列中的数据是否有重复值。
1)唯一索引:
索引列中不可能出现重复值。
3、按列的个数:
索引覆盖的列的个数。
1)单列索引:
基于一个列建立的索引。
2)复合索引(也称为联合索引):
基于两个或两个以上列建立的索引。
二、索引的优缺点
1、优点:
1)大大加快数据的检索速度。
2)创建唯一性索引,保证数据库表中每一行数据的唯一性。
3)加速表和表之间的连接。
4)在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
2、缺点:
1)索引需要占物理空间。
2)当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
三、索引跟主键的区别
1、主键一定是唯一性索引,唯一性索引并不一定就是主键。
2、一个表中可以有多个唯一性索引,但只能有一个主键。
3、主键列不允许空值,而唯一性索引列允许空值。
4、索引可以提高查询的速度。
5、主键和索引都是键,不过主键是逻辑键,索引是物理键,意思就是主键不实际存在,而索引实际存在在数据库中。
6、应用范畴不同 种类不同(唯一索引、主键索引和聚集索引主键只是其中的一种)创建方式不同。
四、确认索引用没用上
通过explain查询sql执行计划,主要看key使用的是哪个索引。
五、一般会在什么情况下加索引
1、主键自动建立唯一索引。
2、频繁作为查询条件的字段应该创建索引。
3、查询中与其他表关联的字段,外键关系建立索引。
4、单键/组合索引的选择,组合索引的性价比更高。
5、查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度。
6、查询中统计或者分组字段。
7、过滤条件好的字段选择一段选择加索引。
六、索引创建
CREATE INDEX 索引名 ON 表名 (列)
七、索引什么情况下会失效
1、对列进行计算或者使用函数时。
2、使用了反向操作或者link时。
3、在where语句中使用or时,如果有一个列没索引,那么其他列就会失效。