catch-img

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を学ぼう


次回から、上記の内容をお届けします。
ご期待ください。
第三回へ、続く・・・

​​​​​​​

CONTACT

他社に頼らず自社でデータベースを監視・運用をしませんか?
MaxGaugeがサポートします

お役立ち資料は
こちらから

不明点がある方は、
こちらからお問い合わせください

お電話でのお問い合わせはこちら

平日 10時~18時

人気記事ランキング

タグ一覧