什么时候不加索引?
1、数据少的表
2、不经常用的字段
3、经常更新的字段
联合索引:多个字段建立一棵索引树,遵循最左前缀原则
最左前缀原则:在联合索引中,要想命中索引,需要按照建立索引时的字段顺序依次使用
也就是说,如果建立了索引(a,b,c)->id,
那么select id from table where a=? and b=?是可以命中索引的;
注:select id from table where b=? and a=?与上面等价,因为mysql自带的优化器会做优化
而select id from table where a=? and c=?时,c不能命中索引,因为缺乏b字段,不符合最左前缀原则
参考优化方案:????
疑惑:a能命中索引,那命中索引的结果集是什么?
c不能命中索引,那么它又是在什么数据集上操作的呢?
覆盖索引(很重要,速度飞快):所查询的字段,能在一个索引树中全部找到。