可能重复:
SQL JOIN 与 IN 性能?
我们由 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 表现那么差呢?这是典型的还是我们的设置特定的?