mysql left join優化 left join查詢慢
阿新 • • 發佈:2021-10-09
查詢語句如下:select a.id,a.name,b.start_time ... from a left join b on a.code=b.code where b.delete_flag=0 order by a.id
查詢結果響應時間極慢花了20s ,其中a表資料50000條左右,b表資料不到五百條。
解決思路:檢視兩表關聯欄位字符集是否一致以及是否新增索引。
1.檢視完字符集果然不一致。
修改一致後查詢響應時間到了8、9s左右。
2.檢視索引 mysql>show index from a;show index from b;發現都只有主鍵索引。
新增INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
新增成功之後查詢發現沒有實質性的效果。
EXPLAINselect a.id,a.name,b.start_time ... from aleft joinb ona.code=b.code where b.delete_flag=0 order by a.id
發現索引沒有生效,將where b.delete_flag 改為 and b.delete_flag b表條件放到on 後面用and 索引才生效。
最後查詢響應時間只需要一點幾秒。