DISTINCT と GROUP BY

職場であるソースを眺めていると、集合演算の無いGROUP BY句が出てきました。
しばし考えて、重複行を削除したいのだなと理解したのですが、実際どっちを使う方がいいのでしょうかねえ。

以下、簡単な例です。


SELECT DISTINCT
顧客CODE
FROM
注文


SELECT
顧客CODE
FROM
注文
GROUP BY
顧客CODE

ググってみると、ほとんどのデータベースでGROUP BYの方がパフォーマンスが良いようです。
(とは言っても、劇的に差が出るほどでもない)

本来の考え方からすると、重複行を削除するのはDISTINCTであり、GROUP BYは集合演算をするためのものです。
少しでも早いパフォーマンスが要求されたり、対象レコードが半端じゃない量だったり、繰り返しSQLを実行する必要があるときは仕方無いとしても、速度にほとんど差が無いのであれば、DISTINCTを使う方が本来の意味通りになるため、可読性が向上し、使いやすいんじゃないかなと思うんですけどね。

投稿者: ♪ 日時: 2007年03月28日 00:23 このエントリーをはてなブックマークに追加 このエントリーをYahoo!ブックマークに登録 Save This Page to del.icio.us このエントリーをlivedoorクリップに追加 このエントリーをニフティクリップに追加 このエントリーをBuzzurlに追加このエントリーをBuzzurlに追加 このエントリーをBlogPeople Tagsに追加 このエントリーをBlogPeople Instant Bookmarkに追加 このエントリーをPingKingポッケに追加 このエントリーをFC2ブックマークへ追加 このエントリーをnewsingへ追加 Yahoo!ブックマークでこのサイトを登録している人数 人が登録

トラックバック

このエントリーのトラックバックURL:
http://magicbox.sakura.ne.jp/mt/mt-tb.cgi/363

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)