Mysql ORDER BY DESC 降序排列 索引無效分析


業務場景:Mysql版本5.7.22,查詢設備生產的指定狀態最新在制品,tt_wo_wip(引擎InnoDB)735951條數據,equip_id為32e4537e59404a589b7f1ec4a55ab69b大概由162675條

  • 無索引:4~5s
EXPLAIN SELECT wip.pk_id FROM tt_wo_wip wip WHERE wip.equip_id = '32e4537e59404a589b7f1ec4a55ab69b' AND wip.wip_status != '10' AND wip.del_flag='0'
ORDER BY wip.finish_time DESC LIMIT 0,1;

  • 里程碑:創建索引
CREATE INDEX idx_equipId_finishTime ON tt_wo_wip (equip_id,finish_time);
  • equip_id存在0.02s;equip_id不存在5~6s
EXPLAIN SELECT wip.pk_id FROM tt_wo_wip wip WHERE wip.equip_id = '32e4537e59404a589b7f1ec4a55ab69b' AND wip.wip_status != '10' AND wip.del_flag='0'
ORDER BY wip.finish_time DESC LIMIT 0,1;

  • equip_id存在Extra沒有索引為什么這么快
  • equip_id不存在耗時較長原因分析

減少參數一 equip_id存在0.02s;equip_id不存在0.3~0.4s

EXPLAIN SELECT wip.pk_id FROM tt_wo_wip wip WHERE wip.equip_id = '32e4537e59404a589b7f1ec4a55ab69b' -- AND wip.wip_status != '10' AND wip.del_flag='0'
ORDER BY wip.finish_time DESC LIMIT 0,1;

減少參數二

EXPLAIN SELECT wip.pk_id FROM tt_wo_wip wip WHERE wip.equip_id = '32e4537e59404a589b7f1ec4a55ab69b' AND wip.wip_status != '10' -- AND wip.del_flag='0'
ORDER BY wip.finish_time DESC LIMIT 0,1;

減少參數三

EXPLAIN SELECT wip.pk_id FROM tt_wo_wip wip WHERE wip.equip_id = '32e4537e59404a589b7f1ec4a55ab69b' AND wip.del_flag='0' -- AND wip.wip_status != '10'
ORDER BY wip.finish_time DESC LIMIT 0,1;

修改升序排列 equip_id存在0.02s;equip_id不存在0.2~0.3s

EXPLAIN SELECT wip.pk_id FROM tt_wo_wip wip WHERE wip.equip_id = '32e4537e59404a589b7f1ec4a55ab69b' AND wip.wip_status != '10' AND wip.del_flag='0'
ORDER BY wip.finish_time ASC LIMIT 0,1;

減少參數+修改升序排列 equip_id存在0.02s;equip_id不存在0.2~0.3s

EXPLAIN SELECT wip.pk_id FROM tt_wo_wip wip WHERE wip.equip_id = '32e4537e59404a589b7f1ec4a55ab69b' -- AND wip.wip_status != '10' AND wip.del_flag='0'
ORDER BY wip.finish_time ASC LIMIT 0,1;

分析結果:列使用不等於不一定影響其他列使用索引;ORDER BY降序想使用索引需要查詢條件都是索引列


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM