【发布时间】:2019-12-05 18:10:00
【问题描述】:
SELECT * FROM table1 WHERE f1 >= 'a' ORDER BY f1 LIMIT 100;
SELECT * FROM table1 WHERE f1 ='a' OR f1 > 'a' ORDER BY f1 LIMIT 100;
第一个查询运行得非常快,第二个甚至根本没有返回。
table1 有复合主键 (f1,key2,key3,key4)
知道为什么吗?
【问题讨论】:
-
第二个没有;
-
这是由于算术评估而发生的。 '>=' 是一个算术运算。
-
因为 MySQL 根本无法确定两个 where 子句是否相同。
标签: mysql