在连表情况下,如果排序字段涉及到了两个表,排序字段将无法走索引.
加上第二个排序字段之后,走全表扫描了.
或者尽量让两次排序都用同一个表的字段,这样可以建联合索引让排序也能走索引.(不想建联合索引的话,可以第二次排序用表id,这样单个的索引也能实现二次排序)
使用了GROUP BY 导致排序字段索引失效
加了分组之后,order_no和school_customer_id都是有建索引的
连表字段编码方式不一致导致索引失效
如下图,如果o.id和op.order_id的编码方式不一样的话,索引会失效,并且这个索引失效通过查看执行计划看不出来.
LIKE查询左侧使用通配符
LIKE查询的时候如果左侧使用%或者_,索引会失效.
但如果左侧是具体的值,则还可以走索引.
使用!=或<>
联合索引不符合最左前缀
比如新建一个联合索引idCard_email,
如果直接查email是不会走该索引的.
但如果查询联合索引左侧的idCard则会走索引
或者两个字段都查的时候也走索引,两个字段都查的时候,SQL执行器会优化查询顺序的.