【问题标题】:Performance Comparation Between sql SELECT NULL and SELECT 1sql SELECT NULL 和 SELECT 1 之间的性能比较
【发布时间】:2011-06-20 01:20:54
【问题描述】:

哪个性能更好

IF EXISTS(Select null from table)

IF EXISTS(Select 1 from table)

?

【问题讨论】:

    标签: sql mysql database exists


    【解决方案1】:

    两者执行相同,因为 EXISTS 中的 SELECT 子句永远不会被计算。您可以使用以下方法进行测试:

    ... EXISTS(SELECT 1/0 FROM TABLE) 
    

    这应该会触发除以零错误,但不会。

    我个人更喜欢使用 NULL,因为很明显表中没有引用任何内容,因此对其他人更可见。如果不熟悉 EXISTS 子句,选择一个值(如第二个示例中的 INT 数字 1)可能会导致对正在发生的情况进行假设。

    【讨论】:

    • 感谢您的评论。顺便说一句,让我们接受 TABLE 有 10 行,然后我运行一个查询:SELECT 120/2 FROM TABLE。它返回一个列名为 120/ 的表,所有行的值为 60.00。所以它看起来像 MySQL 执行它?因为 120/2 找到了 60.00 但为什么 1/0 不会触发错误。它在该示例的每一行都写入 null,因此这意味着它具有 eauletad 但未触发?
    • 除以零在 MySQL 中不被视为错误。它只是返回 NULL
    • 有趣的是你应该提到...stackoverflow.com/questions/3271455/…
    • @kamaci: SELECT 120/2 ... 没有触及表数据本身,也没有在 EXISTS 子句中。此外,如果您有一个特定的数据库 - 指定它,因为它们之间的行为可能非常不同。
    • 我只是想提一下,它可以被评估,它返回 null 或触发错误都没有关系。如果它在 MySQL 中返回 null,则意味着它“计算”但不会触发错误,因此它“计算”。不是吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多