C#やASP.NETをはじめとするプログラミング技術日記を綴っていきます。
Categories
Archives
メールマガジン
DISTINCT と GROUP BY
職場であるソースを眺めていると、集合演算の無いGROUP BY句が出てきました。
しばし考えて、重複行を削除したいのだなと理解したのですが、実際どっちを使う方がいいのでしょうかねえ。
以下、簡単な例です。
SELECT DISTINCT
顧客CODE
FROM
注文
SELECT
顧客CODE
FROM
注文
GROUP BY
顧客CODE
ググってみると、ほとんどのデータベースでGROUP BYの方がパフォーマンスが良いようです。
(とは言っても、劇的に差が出るほどでもない)
本来の考え方からすると、重複行を削除するのはDISTINCTであり、GROUP BYは集合演算をするためのものです。
少しでも早いパフォーマンスが要求されたり、対象レコードが半端じゃない量だったり、繰り返しSQLを実行する必要があるときは仕方無いとしても、速度にほとんど差が無いのであれば、DISTINCTを使う方が本来の意味通りになるため、可読性が向上し、使いやすいんじゃないかなと思うんですけどね。
このエントリーのトラックバックURL:
http://magicbox.sakura.ne.jp/mt/mt-tb.cgi/363