列前有值的mysql where子句

mrzz3bfm  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(307)

其中条款通常写为:

WHERE columnName > 45

我确信我几年前就读到过,像这样扭转它是没有效率的:

WHERE 45 < columnName

优化器关心吗?日期/日期时间数据类型如何?e、 这样可以吗

WHERE FROM_UNIXTIME(1516142364) < dateTimeColumn

我读到的可能与 BETWEEN ,但我想不出一个例子-所以如果你能读懂我的潜意识,你会得到加分:-)
(并不是说我想把它们颠倒过来,而是我在别人的代码中看到了,我想知道这是一个编码标准问题,还是一个效率问题。)

mbjcgjjk

mbjcgjjk1#

优化器不关心比较中操作数的顺序。传统上,专栏是第一位的。
有些语言(如c)有不同的运算符用于赋值和比较。所以,你可以结束写作 if (x = 0) 当你真的是 if (x == 0) . 第一个做作业;第二个是比较。在这种语言中,一些程序员通常先编写常量,因为 if (0 = x) 将生成编译器错误。
我可以看到这个习惯在sql中延续,尽管赋值问题通常不是问题。

6kkfgxo0

6kkfgxo02#

我无法想象效率有什么不同。这只是偏好的问题。虽然我更喜欢第一种形式,但在有些情况下,相反的形式是有意义的

WHERE 0 < x AND x < 100

读起来比读起来容易

WHERE x > 0 AND x < 100

注意,在 x BETWEEN 0 AND 100 这些限制是包含的,而在上面的示例中它们是独占的。

相关问题