【SQL入門】group by,distinctどちらが性能がよいのか
【今回の内容】
前回は基本的なSQLを備忘録で簡単にまとめていたけど、
【SQL入門】基本的なSQLを目的別にまとめてみた - FOR SE
その中に気になることがあったので調べたものをメモとして紹介します。
今の自分の現場では、重複行を絞り込む時に、「distinct」と「group by」を使う人それぞれいました。
distinctとgroup byは同じように重複行を消すという意味では
どちらでもいいのかなーと思っていたけど、
疑問に思ったので少し調べてみました。
【疑問】distinctとgroup by は重複行を消す目的ならどちらを使ってもよいのか?
【結論】 結果としてはどちらも重複行を消すという意味では同じらしい。
だが、一般的にgroup byは集合関数(sumとかcountとか)と一緒に使うので、
そもそもの目的用途が違うのではという話があった。
また、どちらが性能が良いかという事に関しては、賛否両論ある様子。
■distinct>group by派
なし
■distinctやgroup byの代りにEXISTSを使う派
基礎から理解するデータベースのしくみ(5) | 日経 xTECH(クロステック)
個人的には、そもそもDISTINCTやgrop byの代わりにEXISTSを使うという意見がおもしろかった。
手早く目的のデータを取得したいときは、手段は問わない(どれを使ってもいい)けど、
性能改善やチューニングを行う際は、こういった知識が必要なのかなと言う意味で。
こんな入門者向けのブログを書いている人がどんな人物で、どんな人生を歩んでいるのか、もし興味があれば読んでいっていただけると幸いです。
☆入社半年の時☆
文系SE(システムエンジニア)の実態―配属後4カ月で思うこと― - FOR SE
☆入社3年目の時☆
文系SE(システムエンジニア)の実態―三年目で思うこと― - FOR SE
☆英語も勉強してました!
【英語】文系SEが、TOEIC350点付近⇒TOEIC850になった話 - FOR SE
☆これから転職を考えている人向け☆
【整理】異業界異職種への退職エントリー(SEから営業へ) - FOR SE