您的位置:首页 > 数据库 > MySQL

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

2017-07-10 18:20 585 查看
查看执行时走的索引:

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%的全表数据对于走索引反而是更不好的)
解决方案:

清洗掉索引键命中的脏数据或者无效的数据!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: