
SQLチューニング (第2回)
第二回は、今後の全貌になります。今回は、TIPSはお届けできませんが、今後どのような内容になるのかをタイトルから想像いただき、今後のSQLチューニングのTIPS習得にお役立てください。
内容
Chapter 01
SQLチューニングの初めは? ・・・・ (第一回にて掲載ずみ)
Chapter 02
サブクエリと性能問題を理解すること
サブクエリーに対する基本内容理解すること
サブクエリとは
サブクエリの使用パターンに対して調べてみよう
サブクエリ動作方式理解すること
FILTER動作方式
結合動作方式
サブクエリ動作方式を制御するヒント
サブクエリを活用したSQL性能改善
非効率的なMINUSの代わりにNOT EXISTSを使おう
結合の代わりにサブクエリを活用しよう
WHERE節のサブクエリを結合に変更しよう
Chapter 03
スカラーサブクエリの理解と効率的なSQLの作成
スカラーサブクエリの特性の理解
最大結果件数、繰り返し実行される
抽出されるデータは常に1件だけ有効である
データが抽出されなくてもよい
スカラーサブクエリと結合の理解および活用
スカラーサブクエリは最終結果だけに実行しよう
スカラーサブクエリと結合の関係から見るSQL性能問題
Chapter 04
WITH節理解と効率的なSQLの作成
WITH節動作方式を理解すること
MATERIALIZE動作方式
INLINE VIEW動作方式
SQL性能改善のためにWITH節を活用する
データ重複アクセスを除去する
VIEW PREDICATING性能問題を除去すること
階層クエリーのデータ処理を最小化すること
WITH節を使う時、注意しなければならない点は?
同時性が高い場合MATERIALIZE動作方式は避けよう
抽出件数が多い場合WITH節は避けよう
WITH節宣言は、SQLの最も前に位置させよう
WITH節に動作方式ヒントを追加しよう
Chapter 05
MERGE構文理解と効率的なSQLの作
MERGE構文の構成要素が分かること
INTO節
USING節
ON節
MERGE構文で処理されるデータを理解すること
MERGE_T1テーブでは何件UPDATEされるか?
MERGE_T1テーブルでは何件DELETEされるか?
MERGE_T1テーブルでは何件INSERTされるか?
MERGE構文作成時発生しうるエラーと解決方法を調べる
TARGET TABLEとSOURCE TABLEの結合は1:1でなければならない
UPDATEカラムはON節に使うことはできない
MERGE構文は多様な形態のDMLを支援する
MERGE構文を性能問題に活用しよう
Chapter 06
FUNCTION実行とSQL性能問題の理解
FUNCTIONの基本内容を理解すること
USER DEFINED FUNCTIONの意味
USER DEFINED FUNCTIONの特徴と長所
USER DEFINED FUNCTIONの種類と使用法
FUNCTION動作方式を理解すること
SELECT節に使うFUNCTIONの動作方式
WHERE節に使うFUNCTIONの動作方式
FUNCTION実行とSQL性能問題
FUNCTIONは最終抽出結果にだけ実行しよう
FUNCTIONがスカラーサブクエリで実行するように変更しよう
FUNCTIONを呼び出す値のパターンを分析しよう
SELECT節に使われたFUNCTIONを結合に変更しよう
WHERE節のFUNCTIONをSELECT節に移そう
Chapter 07
DECODE & CASE WHENの理解および条件ステートメントの処理
DECODE
構文
構文に対する詳細説明
DECODEとパフォーマンスの問題
CASE
構文
構文に対する詳細説明
単純CASEと探索CASE使用法
例を用いたCASEの使用法
Chapter 08
NULL処理構文の理解と効率的なSQLの作成
NULL処理関数の理解
NVL ()
NVL2 ()
NVLの活用
実行計画の分離
IS NULL照会の改善
グループ関数(COUNT,SUM,MAX,MIN)とNVL処理
NULLABLEカラム使用による非効率COUNT関数処理
IS NULL照会に対する改善方法検索
NVL処理とFUNCTION BASED INDEX生成
カラム属性変更(DEFAULT設定)とNULLデータ アップデート
カラム追加およびインデックス生成後WHERE節変更
IS NOT NULL照会に対する改善方法検索
多様なIS NOT NULL処理とSQL性能問題
結合処理時IS NOT NULLを活用すること
‘ ‘(BLANK)とNULLデータ処理
‘ ‘(BLANK)データがNULLか?
TRIM & NVL処理
‘ ‘とNULLデータ処理関連性能問題
Chapter 09
日データ関連関数紹介
データタイプ間の日付データの制御
DATE照会-エラーが発生する場合
DATE照会-正常照会される場合
誤った日演算
日付、時間、分、秒の計算
日付と関連の便利な関数
TO_DATE & TO_TIMESTAMP & TO_CHAR(datetime)
ADD_MONTHS
MONTHS_BETWEEN
LAST_DAY
NEXT_DAY
ROUND
TRUNC
EXTRACT
Chapter 10
任意のデータを活用した効率的なSQLの作成
CONNECT BY LEVELでデータを抽出する
任意の数字作り
任意の日作り
CONNECT BY LEVEL活用すること
データ変換時CONNECT BY LEVELを使う
データ重複照会の除去
インデックス処理の負荷が多い場合
Chapter 11
カラム変形によるSQL性能問題の理解する
照会カラムと変数のデータ タイプを合わせよう
カラムに不要なORACLE提供関数を使用しない
不適切にFUNCTIONをカラムに使う場合
カラム変形によりインデックスのMIN/MAXを活用できない場合
パーティションキー列の変形は、すべてのパーティションを読む
Chapter 12
照会パターンに合うようにSQL実行計画を分岐すること
多くの照会パターンを持つSQLは一つのSQLでない
SQLの照会パターン別の実行計画を分岐しよう
色々な条件を持つSQLの実行計画分岐すること
変数値の範囲によりSQLを分離しよう
Chapter 13
ROWNUMの理解と関連SQL性能問題の理解
ROWNUMデータを先に抽出した後、問い合わせよう
ORDER BYとROWNUMを同じ位置に置くのをやめよう
ROWNUM=1は、ROWNUM<=1で使おう
INDEX_DESCとROWNUM<=1を共に使うのをやめよう
ROWNUM<=1は常に速くない
インライン ビューにROWNUMを追加する時は注意しよう
Chapter 14
画面PAGINATION処理する時これは守ろう
ROWNUM処理をよくしよう
インデックス カラム順序とORDER BY節順序を合わせよう
PLANに現れるオペレーション中COUNTに騙されないでおこう
NESTED LOOPS JOINを使おう
NESTED LOOPS JOINに非効率が多くない場合、効果的である
基本的な形態のPAGINATIONを学ぼう
次回から、上記の内容をお届けします。
ご期待ください。
第三回へ、続く・・・