INNER JOIN versus IN statement for SQL Server



可能的重复项:
SQL 联接与性能?

我们由 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查询的想法。

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

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

最新更新