2021.03.24
SQLチューニング (第2回)
第二回は、今後の全貌になります。今回は、TIPSはお届けできませんが、今後どのような内容になるのかをタイトルから想像いただき、今後のSQLチューニングのTIPS習得にお役立てください。
内容
- Chapter 01
- SQLチューニングの初めは? ・・・・ (第一回にて掲載ずみ)
- Chapter 02
- サブクエリと性能問題を理解すること
- サブクエリーに対する基本内容理解すること
- サブクエリとは
- サブクエリの使用パターンに対して調べてみよう
- サブクエリ動作方式理解すること
- FILTER動作方式
- 結合動作方式
- サブクエリ動作方式を制御するヒント
- サブクエリを活用したSQL性能改善
- 非効率的なMINUSの代わりにNOT EXISTSを使おう
- 結合の代わりにサブクエリを活用しよう
- WHERE節のサブクエリを結合に変更しよう
- サブクエリーに対する基本内容理解すること
- サブクエリと性能問題を理解すること
- Chapter 03
- スカラーサブクエリの理解と効率的なSQLの作成
- スカラーサブクエリの特性の理解
- 最大結果件数、繰り返し実行される
- 抽出されるデータは常に1件だけ有効である
- データが抽出されなくてもよい
- スカラーサブクエリと結合の理解および活用
- スカラーサブクエリは最終結果だけに実行しよう
- スカラーサブクエリと結合の関係から見るSQL性能問題
- スカラーサブクエリの特性の理解
- スカラーサブクエリの理解と効率的なSQLの作成
- Chapter 04
- WITH節理解と効率的なSQLの作成
- WITH節動作方式を理解すること
- MATERIALIZE動作方式
- INLINE VIEW動作方式
- SQL性能改善のためにWITH節を活用する
- データ重複アクセスを除去する
- VIEW PREDICATING性能問題を除去すること
- 階層クエリーのデータ処理を最小化すること
- WITH節を使う時、注意しなければならない点は?
- 同時性が高い場合MATERIALIZE動作方式は避けよう
- 抽出件数が多い場合WITH節は避けよう
- WITH節宣言は、SQLの最も前に位置させよう
- WITH節に動作方式ヒントを追加しよう
- WITH節動作方式を理解すること
- WITH節理解と効率的なSQLの作成
- 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構文を性能問題に活用しよう
- MERGE構文の構成要素が分かること
- MERGE構文理解と効率的なSQLの作
- 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節に移そう
- FUNCTIONの基本内容を理解すること
- FUNCTION実行とSQL性能問題の理解
- Chapter 07
- DECODE & CASE WHENの理解および条件ステートメントの処理
- DECODE
- 構文
- 構文に対する詳細説明
- DECODEとパフォーマンスの問題
- CASE
- 構文
- 構文に対する詳細説明
- 単純CASEと探索CASE使用法
- 例を用いたCASEの使用法
- DECODE
- DECODE & CASE WHENの理解および条件ステートメントの処理
- 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データ処理関連性能問題
- NULL処理関数の理解
- NULL処理構文の理解と効率的なSQLの作成
- 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を使う
- データ重複照会の除去
- インデックス処理の負荷が多い場合
- CONNECT BY LEVELでデータを抽出する
- 任意のデータを活用した効率的なSQLの作成
- Chapter 11
- カラム変形によるSQL性能問題の理解する
- 照会カラムと変数のデータ タイプを合わせよう
- カラムに不要なORACLE提供関数を使用しない
- 不適切にFUNCTIONをカラムに使う場合
- カラム変形によりインデックスのMIN/MAXを活用できない場合
- パーティションキー列の変形は、すべてのパーティションを読む
- カラム変形によるSQL性能問題の理解する
- Chapter 12
- 照会パターンに合うようにSQL実行計画を分岐すること
- 多くの照会パターンを持つ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を追加する時は注意しよう
- ROWNUMの理解と関連SQL性能問題の理解
- Chapter 14
- 画面PAGINATION処理する時これは守ろう
- ROWNUM処理をよくしよう
- インデックス カラム順序とORDER BY節順序を合わせよう
- PLANに現れるオペレーション中COUNTに騙されないでおこう
- NESTED LOOPS JOINを使おう
- NESTED LOOPS JOINに非効率が多くない場合、効果的である
- 基本的な形態のPAGINATIONを学ぼう
- 画面PAGINATION処理する時これは守ろう
次回から、上記の内容をお届けします。
ご期待ください。
第三回へ、続く・・・