L
o
a
d
i
n
g
.
.
.

ホーム

お知らせ

製品・ソリューション

サービス

導入事例・パートナー

EXEM Academy・ブログ

会社情報

採用情報

2023.07.26

 SQLチューニング(第52回)

「画面PAGINATION処理する時これは守ろう」(6/7回)

今回のSQLチューニングは、「 画面PAGINATION処理する時これは守ろう 」の第6回目です。

「 NESTED LOOPS JOINに非効率が多くない場合、ページ処理が効果的である 」をお送りします。

それでは早速はじめていきましょう。

 13.5 NESTED LOOPS JOINに非効率が多くない場合、ページ処理が効果的である

効果的なページ処理が行われるためには、Driving Tableで抽出されたデータ件数と最終的に抽出されたデータ件数の差が
大きくなってしまうのは、望ましくはありません。

例えば、[A→B→C?→D]4個のテーブルを結合後、その結果を抽出するSQLがあるとします。
そしてこのSQLは、まずAのテーブルで1,000,000件を抽出した後、Bテーブルとの結合処理を行った結果、データ件数が
1,000件に減少した。

次に、Bテーブルで抽出された1,000件に、更に[C,Dテーブル]を結合処理を実行し、最終的に1,000件のデータが抽出
されたとします。

上記のようなSQLにページ処理を適用すると、1ページに表示する必要があるデータ件数と比較した場合、多くのI/O処理量
が発生することになります。そのため、効率的な部分範囲処理が行われないことがあります。

その理由は、1ページに表示する必要のあるデータは、SQLのROWNUM条件をクリアしなければなりません。
しかし、Driving Tableで抽出された1,000,000件のうち、Bのデータに,更にC,Dテーブルとの結合に成功したデータは、
1,000件であるので、ROWNUM条件をクリアするデータを抽出するには、多くのデータ処理が必要となるからです。

従って、Driving Tableで抽出されたデータの結合処理を実行しても、結果としてデータ件数が減らない場合には、
ページ処理を行った方が効率的であると言えます。

SQLチューニングブログ(第52回) 終

今回の Oracle SQLチューニングブログ はいかがでしたか?

次回のブログは「 画面PAGINATION処理する時これは守ろう 」の最終回です。

次回ブログテーマ


 「 基本的な方式のPAGINATIONを学ぼう 」です

次回もどうぞお楽しみに
それでは See you next time!!
画像に alt 属性が指定されていません。ファイル名: Tuningbunner-MaxGauge-1.png
画像に alt 属性が指定されていません。ファイル名: SmartDBA-bunner-1.png
PHP Code Snippets Powered By : XYZScripts.com