目录
创建索引的要求:
一、创建索引之前需要进行调研和协调
1、索引增加了数据修改时候的服务器开销。索引在提高select的效率的同时会降低update和insert,delete的效率。索引存储于自平衡的搜索树上,每当新增或者减少数据以后,搜索树就会自动进行旋转,至于新的平衡态。在数据库中,索引的重新调整,是有数据库自动完成的,具有一定的服务器开销。2、索引占用物理空间 (索引基于Lucene按照一定方式写在本地磁盘)
所以索引在提高性能的同时也需要付出代价,所以创建索引的时候需要去的一个平衡。
二、创建索引的规则
1、对于很少在查询涉及到的列 不创建索引(占用物理空间,增加服务器开销,又无法减少访问效率,增加响应速度)2、对于重复值比较多的列 不创建索引(SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引)
3、对于按照范围查询的列 最好建立索引 (可以利用索引已经拍好的顺序,增加响应速度)
4、适当使用复合索引(最左匹配原则),节约时间和空间。
复合索引的建立以及最左匹配原则
复合索引指的是 在多列上建立索引,也叫 组合索引。复合索引在数据库操作期间所需要的开销更小,可以替代多个单个索引。
对于复合索引,在查询使用时,最好将条件顺序按照索引的顺序,这样效率最高。
如果创建了复合索引index(A,B,C),则相当于建立了 index(A),index(A,B),index(A,B,C)三种索引。
- 至少使用复合索引的第一个索引并用and连接查询条件,可以触发索引
- 没有第一个索引,不会索引的使用
- 使用大于/小于的判断不影响索引的使用
- 使用 or 不会命中索引。
【多个独立索引的使用顺序由数据库的优化器决定】
唯一索引 和 主键的区别?