2012-10-11 76 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來嘗試此操作。