其中条款通常写为:
WHERE columnName > 45
我确信我几年前就读到过,像这样扭转它是没有效率的:
WHERE 45 < columnName
优化器关心吗?日期/日期时间数据类型如何?e、 这样可以吗
WHERE FROM_UNIXTIME(1516142364) < dateTimeColumn
我读到的可能与 BETWEEN
,但我想不出一个例子-所以如果你能读懂我的潜意识,你会得到加分:-)
(并不是说我想把它们颠倒过来,而是我在别人的代码中看到了,我想知道这是一个编码标准问题,还是一个效率问题。)
2条答案
按热度按时间mbjcgjjk1#
优化器不关心比较中操作数的顺序。传统上,专栏是第一位的。
有些语言(如c)有不同的运算符用于赋值和比较。所以,你可以结束写作
if (x = 0)
当你真的是if (x == 0)
. 第一个做作业;第二个是比较。在这种语言中,一些程序员通常先编写常量,因为if (0 = x)
将生成编译器错误。我可以看到这个习惯在sql中延续,尽管赋值问题通常不是问题。
6kkfgxo02#
我无法想象效率有什么不同。这只是偏好的问题。虽然我更喜欢第一种形式,但在有些情况下,相反的形式是有意义的
读起来比读起来容易
注意,在
x BETWEEN 0 AND 100
这些限制是包含的,而在上面的示例中它们是独占的。