什么更快,为什么?其中1 = 1或其中1 <= 1

时间:2010-11-24 22:34:11

标签: sql

我想知道其中哪一项执行速度更快,原因如何:

select column1 from table1 where 1=1

select column1 from table1 where 1<=1

oracle / sql server / mysql之间的性能会有差异吗?

请同时考虑代替1的地方,我们使用一些变量x

假设x = 2

会更快
select column1 from table1 where x=2

select column1 from table1 where x<=2

如果您有更多答案,因为它已关闭,只需添加评论即可。

4 个答案:

答案 0 :(得分:3)

任何合理的引擎都会花费大量时间来认识到它们都与TRUE相同。由于没有在逐行的基础上进行实际比较,因此查询的执行速度没有任何有效差异。

无论如何,非常最快的写法是:

   select column1 from table1

(再次,在任何合理的引擎中)将通过查询优化器并生成一个简单的执行计划。

答案 1 :(得分:0)

老实说,我不知道没有做基准测试,但我会说=比&lt; =因为=是一个简单的等式运算符,其中&lt; =是一个范围运算符。我愿意打赌,差异是微不足道的。

答案 2 :(得分:0)

嗯,这些都是荒谬的查询。但是,一般来说,如果不比较查询计划,就不可能最终回答这类问题。数据库系统将根据任意数量的因素(包括可用的索引和表的大小)对查询进行不同的评估。

如果您使用的是MySQL或PostgreSQL,可以通过将EXPLAIN添加到查询的开头并在终端中运行来获取查询计划。有关详细信息,请参阅MySQL documentationPostgreSQL documentation

答案 3 :(得分:-1)

Byron Whitlock说的是,如果存在差异,显然第一个更快,因为它需要更简单的比较。