索引的建立原则, 如何避免索引失效
源自面试鸭
建立索引
1.经常使用的字段
2.字段最好唯一
3.字段类型尽量用数值型,减少字符类型
4.对于带条件和排序字段的字段建立索引
5.频繁出现在where条件后面的字段
6.字段应选差异性较大的字段,否则失去了索引的意义。
如何避免索引失效
1.最佳左前缀法则 - 如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始并且不跳过复合索引中间列。
2.不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描。
3.存储引擎不能使用索引中范围条件右边的列。
4.尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select *。
5.mysql在使用不等于(!=或者<>)的时候无法使用索引会导致全表扫描。
6. is null, is not null 也无法使用索引。
7.like以通配符开头(’%abc…’),mysql索引失效会变成全表扫描的操作。
8.字符串不加单引号索引失效。
9.少用or,用它来连接时会索引失效。
使用索引的缺点
1 、会使得写操作的性能下降,因为底层使用的是B+树,增删元素为了保持索引的查询效率,需要对树的结构重新排列,从而使得写操作的效率下降。
2、 索引其实是很庞大的,需要占用额外的磁盘空间。当然如今磁盘很便宜,可能不太在乎!