L
o
a
d
i
n
g
.
.
.

ホーム

お知らせ

製品・ソリューション

サービス

導入事例・パートナー

EXEM Academy・ブログ

会社情報

採用情報

2023.06.13

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

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

 今回のSQLチューニングは、「 画面PAGINATION処理する時これは守ろう 」の第3回目です。
 「 インデックス カラム順序とORDER BY節順序を合わせよう 」と題してお送りします。

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

13.2 インデックス カラム順序とORDER BY節順序を合わせよう

 オンライン画面で適用するページ処理を効率的に実行するためには、Where節で処理する条件、インデックスの
 カラム構成順序、Order By節順序が一致している必要があります。
 しかし、From句に色々なテーブルが存在する場合、必ず上の内容を持つテーブルから順番に実行します。

  例えば、以下のようなSQLがあると仮定しましょう。

 ◆ 部分範囲処理が不可能な例

 ・ WHERE条件:A,Bカラムに対する条件がある。 (二つのうち一つが ‘=’ 照会でないこと)

 ・ インデックス順序:A,B,C,D順になった結合インデックス存在(インデックス カラムのうちA,B使用)

 ・ ORDER BY:C,D? インデックス カラムのうちA,Bは除いた残りカラムで整列


 Where節条件のカラムであるA,B二つのうち一つでもEQUAL照会でない場合、部分範囲処理をすることはできません

 なぜなら、データがC,D順で整列する場合、インデックス カラムのうち、先行カラムであるAやBがEQUAL照会でなければ、
 インデックスを利用した整列を実行することができないためです。

 すなわち、AとBカラムの全部をEQUAL照会すれば、Order By節にC,Dカラムだけあってもインデックスの整列したデータは
 使えるようになります。しかし、A,BカラムのうちAカラムがEQUAL照会でなければ、Order By節をC,DでA,B,C,Dに
 変更することにより、はじめて部分範囲処理が可能となります。

 Where節、インデックス構成、Order By節の構成が部分範囲処理で可能な場合には、下記の通りとなります。

 ◆ 部分範囲処理が可能な例

 ・ WHERE条件- A、B (二つのうち一つでも‘=’照会でない場合)

 ・ インデックス順序- A、B,C,D? インデックス カラムのうちA,B使用

 ・ ORDER BY – A、B,C,D? インデックス カラムのうち全部整列

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

次回テーマ

今回のブログはいかがでしたか?少し短いですが、ここで終わります。

次回のOracle SQLチューニングは
「 PLANに現れるオペレーション中COUNTに騙されないでおこう 」です。


次回もどうぞお楽しみに
 それでは See you next time!!

画像に alt 属性が指定されていません。ファイル名: Tuningbunner-MaxGauge-1.png
画像に alt 属性が指定されていません。ファイル名: SmartDBA-bunner-1.png

PHP Code Snippets Powered By : XYZScripts.com