ユニオンクエリを使う場合のチューニングテクニックです。
SQL で固定値をテーブルのようにして使うケースにユニオンを使う場合があります。ユニオンクエリは「UNION」と「UNION ALL」の2種類を見かけますが、パフォーマンスが大きく違います。
SELECT 1 AS NUM, 'ichi' AS JPN
UNION
SELECT 2, 'ni'
UNION
SELECT 3, 'san'
UNION の場合は、重複を省く役目があるので、そのため処理に差が出ます。上記ははっきりと各行が違うにも関わらず「本当に重複無い?確認しよう」と、データの重複を確認する処理が入ります。
SELECT 1 AS NUM, 'ichi' AS JPN
UNION ALL
SELECT 2, 'ni'
UNION ALL
SELECT 3, 'san'
UNION ALL の場合は「重複無いはずだよね、それでは次に…」と先の処理に進みます。
この例で、100%:0% のパフォーマンス差が出ます。Management Studio でクエリを開き、上記を続けて入力してから「Ctrl+L」で推定実行プランが出ます。
SQL チューニングをするときに、UNION を見かけたとき、重複しないことがわかっている場合は UNION ALL にしてみましょう。