Mysql查询性能(两个查询之间的差异)

时间:2019-12-05 18:10:00

标签: mysql

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)

知道为什么吗?

2 个答案:

答案 0 :(得分:0)

MySQL必须寻找两个条件是第二个查询。首先满足,然后继续前进。在第一个查询中,>=被视为单一算术评估,与第二个查询相比,成本肯定会更低。

答案 1 :(得分:0)

您使用不同的算术实现运行完全相同的条件。

第一个

'> = '是单个算术运算

第二个

f1 ='a'或f1>'a' 现在我们有多个算术运算。它应该检查 f1 ='a' f1>'a' 分别并再次要检查 OR 条件。

因此,肯定地,第一个查询正在快速执行。