1

重複の可能性:
SQL JOINとINのパフォーマンス?

SQL Server 2008に支えられています。ユーザーが検索するアイテムのリストを選択し、それらのアイテムに基づいてすべてのアイテムを取得できるアプリケーションがあります。私たちが使用した2つの手法は次のとおりです。

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はそれをうまく実行しないのでしょうか。これは典型的なものですか、それとも私たちのセットアップに固有のものですか?

4

1 に答える 1

0

これらは、一般的に SQL クエリを改善するための単なるアイデアです。

  • 個人的には、選択したフィールドをテーブルに保存するよりも最初の方法を好みます。テーブルに保存すると、最初の方法よりもオーバーヘッドが大きくなる可能性があります。

  • メイン テーブルに関連するインデックスが作成されていることを確認してください。最も頻繁に検索するフィールドに基づいてインデックスを作成することをお勧めします。たとえば、従業員テーブルで employee_name を検索する場合、そのフィールドのインデックスを作成すると、クエリの実行時間が改善されます。これは、SQL プロファイラーで試すことができます。

于 2012-10-11T21:58:58.030 に答える