2009-12-11 62 views
1

更大之间我有一个查询:差异不等于和高于一些

select *
from randomtable
where randomnumber <> 0

列“RANDOM_NUMBER”永远不会是负数。

所以,如果我写的查询为:

select *
from randomtable
where randomnumber > 0

有什么主要区别?

回答

4

不,根本没有差别(在你的具体情况下)。所有的数字比较都是同一时间。

在最底层完成的工作是从随机数中减去零,然后检查结果。 >运算符查找正的非零结果,而运算符查找非零结果。这些比较是微不足道的,并且花费相同的时间来执行。

+0

感谢细节Guffa。我显然有一个更复杂的查询,这导致我一些问题,这对我来说完全回答。 – Nicks 2009-12-11 09:19:48

2

如果它永远不会小于零,则NO

0

什么是“大于”是什么意思?它意味着'不等于'和'不低于'。在这种情况下,如果数字不能小于零,“大于”等于“不等于”。

2

重要的是要确定你如何知道random_number永远不会是负数。有没有保证它的限制?如果不是,如果某个地方的错误导致它的负面情况,您希望代码执行什么操作?

2

结果集应该永远不会不同。查询路径可能是第二个可能选择从randomnumber = 0开始的索引范围扫描并按顺序查找记录。因此,结果的顺序可能会有所不同。

如果结果的顺序很重要,然后放在订单旁