【技能库】--mysql 索引失效 force index也失效-- 原因解决方案(256)

xiaoxiao2021-02-28  86

查看执行时走的索引:

explain SELECT count(*) FROM tb_task

WHERE  create=0  and create_time < '2017-07-10 22:00:00' ;

结果:

+----+-------------+-------------+-------+-------------------------+------------+---------+------+------+-----------+ | id | select_type | table       | type  | possible_keys       | key       | key_len | ref  | rows | Extra               +----+-------------+-------------+-------+-------------------------+------------+---------+------+------+-----------+

如果没有走 key=null 或者不是自己预想的索引!

此时可以强制指定走索自己建立的  force index(idx_create_time)

explain SELECT count(*) FROM tb_task force index(idx_create_time)

WHERE  create=0  and create_time < '2017-07-10 22:00:00' ;

如果key依然不是自己指定的索引!!就有问题了

原因:

堆积量太大  MySQL内部计算cost 走索引不合理(因为: 正常的数据量超过20%的全表数据对于走索引反而是更不好的

解决方案:

清洗掉索引键命中的脏数据或者无效的数据!

转载请注明原文地址: https://www.6miu.com/read-35514.html

最新回复(0)