【问题标题】:INNER JOIN versus IN statement for SQL Server [duplicate]SQL Server 的 INNER JOIN 与 IN 语句 [重复]
【发布时间】:2012-10-02 13:58:36
【问题描述】:

可能重复:
SQL JOIN vs IN performance?

我们由 SQL Server 2008 提供支持。我们有一个应用程序,用户可以在其中选择要搜索的项目列表,然后他们会根据这些项目获取所有项目。我们使用的两种技术是:

SELECT * FROM mytable WHERE myval IN ('A', 'B', 'C')

和

INSERT INTO tempTable (tempvalue) ('A'), ('B'), ('C')
SELECT * FROM mytable m INNER JOIN tempTable t WHERE m.myval = t.tempvalue

当然,第一个选项更容易,但是一旦用户选择了超过 50 个值,性能就会很糟糕。到了我们谈论废弃IN的地步,因为性能迅速下降。

那么,为什么 IN 表现那么差呢?这是典型的还是我们的设置特定的?

【问题讨论】:

标签: sql sql-server-2008


【解决方案1】:

这些只是总体上改进 SQL 查询的想法。

  • 我个人更喜欢第一种方法而不是保存选定的字段 到一个表中,这可能比第一种方法有更多的开销。

  • 确保您已为主表创建了相关索引。 根据您最常使用的索引创建索引是一个很好的做法 搜索字段,例如,如果您在员工表中搜索 employee_name,您可以为该字段创建一个索引,它将 提高查询执行时间。你可以用 SQL 试试这个 探查器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多