【问题标题】:SQL Server: Select in vs or?SQL Server:在 vs 或中选择?
【发布时间】:2010-01-21 16:07:34
【问题描述】:

哪个更快?

SELECT UserName
FROM dbo.UserTable
WHERE UserID in (1,3,4)

SELECT UserName
FROM dbo.UserTable
WHERE UserID = 1 
      OR UserID = 3
      OR UserID = 4

【问题讨论】:

标签: sql-server performance inline


【解决方案1】:

由于 Sql Server 对查询的优化,这些查询将以相同的速度运行,因为它们在逻辑上是等效的。

不过,为了简洁和可读性,我更喜欢 IN 语法。

【讨论】:

  • 而不是Or/In有什么方法可以查询吗?那会执行得更快吗?
  • @Worgon 如果值的数量很大,您可以将不同的值放入索引临时表并加入。
【解决方案2】:

其实是一样的。

如果您显示估计的执行计划,您将看到它正在执行相同的操作。

【讨论】:

    【解决方案3】:

    这与通过 Linq 生成 SQL 有关。在某些情况下,创建的 sql 格式为:field='xxx' OR field='yyy'。

    【讨论】:

    • 你能澄清一下吗?我不知道你在说什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 2017-07-28
    • 1970-01-01
    相关资源
    最近更新 更多