【问题标题】:SQL Server operands order [duplicate]SQL Server操作数顺序[重复]
【发布时间】:2016-02-02 18:24:28
【问题描述】:

如果有一个非常大的表 T1(Id INT, Name VARCHAR(MAX), Category VARCHAR(MAX)) 并且 Category 是 INDEX UNIQUE NONCLUSTERED,如果我像这样进行选择,操作数的顺序是否重要

SELECT * FROM T1 WHERE Name = 'name' and Category = 'cat'

SELECT * FROM T1 WHERE Category = 'cat' and Name = 'name'

?

【问题讨论】:

  • 如果你尝试它会发生什么?你注意到有什么不同吗?
  • 查看实际执行计划
  • 您在 VARCHAR(MAX) 上有一个唯一的非聚集索引?真的吗?
  • @roryap:在测试环境中没有区别,因为表不大。由于我的访问级别,我无法创建大表。我担心生产非常大的表。
  • @FrankFajardo:对,不是 VARCHAR(MAX),是 VARCHAR(50)。

标签: sql sql-server tsql


【解决方案1】:

没有任何区别,您的 db planner 将解析代码并选择更好的选项。

有趣的是,如果表大小发生变化,执行顺序也会发生变化。但是你怎么写就不会了。

【讨论】:

    【解决方案2】:

    根据您在表上的索引可能会有所不同。检查实际的执行计划,看看 sql 决定使用什么

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      • 2019-09-04
      • 2018-02-09
      • 1970-01-01
      • 2010-09-07
      相关资源
      最近更新 更多