【问题标题】:sql performance detail decision with * or specify field使用 * 或指定字段的 sql 性能细节决策
【发布时间】:2013-10-20 04:41:32
【问题描述】:

当我写的时候:

if not exists (select * from sys_maxkey)

更好,或者

if not exists (select id from sys_maxkey)

最好是表sys_maxkey变量。

还是没有区别?我上网查了existsin,但是没注意这个特殊点。

谢谢!

【问题讨论】:

    标签: sql tunneling


    【解决方案1】:

    我建议像这样只使用1。这将是最好的。因为exists 只检查你的表中是否有任何条目。

    if not exists (select 1 from sys_maxkey)
    

    虽然如果您想比较问题中提到的上述两者,那么

    if not exists (select id from sys_maxkey)
    

    如果id主键会更好。您不必为了检查表中是否存在值而使用* 检查所有列。

    【讨论】:

    • 如果你告诉我使用 * 对性能有影响吗?如果表非常非常大?是的,我使用主键来判断。
    • 是的,但前提是您的桌子非常大。您绝对不需要为了检查表是否有条目而获取所有列;)
    • 是的,我用主键判断..那么你肯定不需要用"*"来检查表中的条目存在。
    • @Dolphin:- select 1 仍然是更好的选择,因为它只会检查数据库中是否有条目。但是当你说从表中选择 id 时,它会从表中获取所有 id。所以性能明智的选择 1 会更好:) 希望说明清楚!
    • 哦,我明白了。谢谢您的指导。
    猜你喜欢
    • 1970-01-01
    • 2018-03-03
    • 2015-01-31
    • 2020-08-05
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    相关资源
    最近更新 更多