SQLで集約関数LISTAGGを使うと遅い!?
ここではORACLEデータベースのSQLで、LISTAGG関数を使うとSQLが遅くなるのか、という疑問について紹介しています。
遅いSQLや実行回数の多いSQLを確認する方法は↓で紹介していますので参考にしてください。
>>【SQL】長時間処理や遅いSQLを確認する方法
>>【SQL】実行回数の多いSQLを確認する方法
集約関数LISTAGGを使うと遅い!?
私は最近知りました、LISTAGG(笑)
どうもレスポンスが遅い画面があって、調べていました。
SQLを見ると、どうもSQLで参照しているVIEWのレスポンスが遅い。
VIEWの中身を見てみると、ありました、LISTAGG。
使い方は他の集約関数と同様に、GROUP BYと一緒に使ってください。
これを使うことで例えば
商品名 色柄
ドライヤー 黒,白,赤
↑みたいな感じで、色柄をカンマ区切りで取得する、みたいな使い方が出来ます。
結構限られた条件下ではありますが、業務アプリでは意外と使えると思います。
実装方法もとても簡単です。
ただ、少し考えれば分かりますが、
大量データを処理すればどうなるか・・・
大変遅いです。
なので、使いどころを考えましょう、と先輩に言いたい。。
最後に
最後までお読みいただきありがとうございます。
SQLのチューニング方法は↓で紹介していますので参考にしてください。
>>SELECT文のSQLチューニング方法まとめ