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)
知道为什么吗?
答案 0 :(得分:0)
MySQL必须寻找两个条件是第二个查询。首先满足,然后继续前进。在第一个查询中,>=
被视为单一算术评估,与第二个查询相比,成本肯定会更低。
答案 1 :(得分:0)
您使用不同的算术实现运行完全相同的条件。
第一个
'> = '是单个算术运算
第二个
f1 ='a'或f1>'a' 现在我们有多个算术运算。它应该检查 f1 ='a'和 f1>'a' 分别并再次要检查 OR 条件。
因此,肯定地,第一个查询正在快速执行。