gpt4 book ai didi

mysql - 两个相似的sql查询之间的性能差异

转载 作者:可可西里 更新时间:2023-11-01 07:45:41 25 4
gpt4 key购买 nike

做和做有什么区别:

SELECT * FROM table WHERE column IS NULL

或-

SELECT * FROM table WHERE column = 0

IS NULL 是否比等同于常量更糟糕?

用例出现在我有类似的地方:

SELECT * FROM users WHERE paying IS NULL

(或添加一个额外的列)

SELECT * FROM users WHERE is_paying = 0

最佳答案

如果我对您的问题的理解正确,那么您是在询问两种情况下的相对好处/问题:

  • 其中 is_paying = 0
  • paying为空

鉴于两者都在数据表中,我想不出为什么一个会比另一个表现更好。我确实认为第一个更清楚查询在做什么,所以这是我更喜欢的版本。但从性能的角度来看,它们应该是相同的。

其他人提到过——我相信你知道——NULL 和 0 是不同的东西。它们在联接和其他元素的优化中也可以有不同的行为。但是,对于简单的过滤,我希望它们具有相同的性能。

好吧,有一种技术性。与“0”的比较可能内置于 CPU 中。与 NULL 的比较可能是一个需要掩码、移位和比较之类的位操作——这可能需要更长的时间。但是,与您一开始就从磁盘读取数据的事实相比,这种性能差异可以忽略不计。

关于mysql - 两个相似的sql查询之间的性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11713899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com