例如,我有这个查询:
SELECT * FROM a WHERE field IN (-1, "1")
上述查询的执行时间比此查询长20倍。为什么呢?
SELECT * FROM a WHERE field IN (-1, 1)
此外,在第一种情况下,即使使用USE INDEX
,也不会使用索引。
答案 0 :(得分:2)
很可能是因为MySQL正在将field
转换为CHAR,而不是"1"
转换为INT。
看看它运行了多长时间:
SELECT * FROM a WHERE field IN (-1, CAST("1" AS INT));