0

ユニオンの使用に関するパフォーマンスの問題があります。列の結果は同じですが、テーブルが異なる 2 つの SQL クエリがあります。

SELECT COL1, COL2, COL3
FROM TABLE1

(終了までに約 4 秒かかります) および:

SELECT COL1, COL2, COL3
FROM TABLE2 INNER JOIN TABLE3 ON ID

これも約 4 秒で完了します。2 つのクエリを使用するUNION ALLと、結果が完了するまでに 22 秒かかります。

パフォーマンスを改善するための提案はありますか?

4

3 に答える 3

2

UNION 句は、select 句で DISTINCT を使用し、いくつかの一時テーブルを作成することで重複を削除します。これらはパフォーマンスの高いタスクです。それらの重複が必要ですか?

Pinal Dave によるこのリンクをチェックしてください。UNION と UNION ALL の使用に関する詳細な分析と、実行計画の分析も含まれています。

これらのselect句でインデックスが正しく使用されているかどうかも確認しますが、テーブル構造の詳細なビューがないと言うのは難しいです。

于 2012-05-23T08:11:43.000 に答える
0

使用してみてくださいUNION ALL- 重複の検出を回避します。本当に必要な場合を除き、andUNIONなしで使用しないことをお勧めします。ALLDISTINCT

于 2012-05-23T08:03:41.313 に答える
0

パフォーマンスに関する質問と同様に、測定します。

したがって、次のステップは、データベースから実行計画を取得し、それを確認することです。計画を理解していない場合は、新しい質問を開きます。

于 2012-05-23T08:04:30.573 に答える