1. 主键失效
主键是int自增类型
看如下2条sql:
查询条件没有加引号,导致全表扫描,非常耗时。
还有一种情况,如果索引是字符串类型,查询条件没有加引号也是会失效的
https://dev.mysql.com/doc/refman/5.5/en/type-conversion.html
2. 多表join查询按照主表ID排序,索引失效
如图,hotel_info 中二十多万数据,连了3张关联表,其中 hotel_supplier_vender_relation
和 hotel_supplier_management
只有2条和4条数据。因为最开始是生成环境报的查询速度慢的问题。因为表结构都一样,最开始怀疑是mysql版本的问题,因为生成环境是5.6,而测试环境是5.7,比较5.7做了很多优化。
但是关于索引失效应该不是版本的问题,于是做了个实验。将测试环境表结构和数据导一份到本地,将2张关联表的数据不断减少,当减少到每张表都为7条的时候,奇迹出现了。此时不管减少一条哪张表的数据,都会出现索引失效的问题。
此时可以强制走索引,或者在表中增加数据都可以解决问题(ps:生成环境不是你想加就能加的)。