簡體   English   中英

MySQL WHERE IF條件下的查詢非常慢

[英]MySQL very slow query with WHERE IF condition

參考以下查詢。 即使邏輯與第二個查詢相同,第一個查詢的運行速度也非常慢。 表table01和table02分別具有約15000條記錄。 那么,這到底是什么問題呢? 我已經筋疲力盡了。

-- 1st. Very slow
hardcoded here for easier reference
SELECT a.eventid, d.fileno
FROM table01 a LEFT JOIN table02 d ON a.eventid=d.eventid
WHERE IF('fileno'='fileno',d.fileno = 'FIL123',0=0)
-- original: WHERE IF(search_field='fileno',d.fileno = 'BC12449',0=0)
-- search_field is passsed from stored procedure

-- 2nd. Fast
SELECT a.eventid, d.fileno
FROM table01 a LEFT JOIN table02 d ON a.eventid=d.eventid
WHERE d.fileno = 'FIL123'

您可能在if子句中生成名稱的列上可能具有的任何索引將無法在第一個示例中使用。

通常,用mysql將列名包裝在任何函數中將否定列的索引受益

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM