2008年2月18日月曜日

UNION と UNION ALL の違い - SQL

"UNION"は重複を排除する為に必ず「ソートユニーク」な処理が行われます。
その為、思いもよらずパフォーマンスを劣化させる事があります。

なので、基本的には"UNION ALL"を使うようにするべきだと思います。
つなげるSQL同士で同じ内容の重複したレコードを返す可能性があって、
しかもそれを複数レコードとして取得したくないという明確な理由がない限り、
"UNION"を使うべきではないのです。

でも、作り込むアプリケーションにおいて、そんな"UNION"のSQLが必要になるっていうのは、
そもそもテーブル構造とかデータベース設計において
失敗している所があるんではないかと思ってしまいます。

絶対そうだとはとても言えませんが、コスト的に可能なら
そういう方向での見直しも検討する価値はあると思います。

0 コメント: