mysql索引分类
聚集索引和非聚集索引
btree,hash,full-text
innodb默认索引为btree索引
一、btree使用索引原则
1.最左匹配原则
比如 index(A,B,C)
where A=xx and B=xx and C=xx
会用到全部的索引
where A=xx and B=xx
会用到2/3的索引
where A=xx and C=xx
只用到了1/3的索引
C=xx是无效的
2.like模糊匹配相当于范围索引
'%string%','%string','string%'
只有第三种会用到范围索引
3.运算符的优先级会影响索引生效
where B=xx and C=xx or A=xx
会优先条件过滤B=xx and C=xx,违反了最左匹配原则,所以该查询条件没有用到索引
4.范围索引会截断索引,使部分索引失效
where A=xx and B>xx and C=xx
该查询条件只用到了2/3的索引,C=xx的索引被截断
二、hash索引
hash索引是将列值
备注:update语句有可能会更新索引,一个可能会用到的优化技巧是去掉过多的索引(可能很少用到,平衡性能来考虑)
索引都是被加载到内存中的
阅读(542) | 评论(0) | 转发(0) |