INNER JOIN与IN语句的SQL Server

时间:2012-10-11 19:53:25

标签: sql sql-server-2008

  

可能重复:
  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表现糟糕呢?这是典型的还是我们的设置特定的东西?

1 个答案:

答案 0 :(得分:0)

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

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

  • 确保您已为主表创建相关索引。 最好根据您的频率创建索引 搜索字段,例如,如果您搜索员工表 employee_name,您可以为该字段创建索引 改善查询执行时间。您可以使用SQL尝试此操作 探查。