2012-10-11 71 views
1

可能重复:
SQL JOIN vs IN performance?INNER JOIN与报表为SQL Server

我们通过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执行那么糟糕?这是典型的还是与我们的设置有关的?

+0

http://stackoverflow.com/questions/1200295/sql-join-vs-in-performance –

回答

0

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

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

  • 确保您为主表创建了相关索引。 根据您最频繁的 搜索字段创建索引是一种很好的做法,例如,如果您搜索雇员表的 employee_name,则可以为该字段创建索引,并且将提高查询执行时间的 。您可以使用SQL Profiler来尝试此操作。