繁体   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