[Oracle SQL] INDEX


>#INDEXオブジェクト
  • オブジェクト
  • 検索効率の向上
  • データベース・サーバのパフォーマンスを決定する要因の1つは、
  • です.
  • データの取得、挿入、変更時のデータ選択(WHERE条件)の効率化
  • ソート、グループ化などに使用
  • は、独立した記憶領域および処理フロー
  • を必要とする.
  • のデータを頻繁に挿入および削除すると、インデックスファイルの再構築に多くのリソースが費やされます.
    -索引オブジェクトのタイプ
    1) UNIQUE/NON-UNIQUE INDEX
  • は、重複が許容するか否かに応じて分類する
  • .
  • UNIQUEインデックスでもNULL値は許可されますが、1回のみ許可されます(プライマリ・キーインデックスは含まれません)
  • .
  • NON-UNIQUE INDEX許容繰返し値
  • 2) SINGLE/COMPOSITE INDEX
  • インデックス構成コラムの数分類
  • 複合インデックスの場合、インデックス構成カラムの数とカラムの順序は非常に重要です.
    3) Normal Index
  • デフォルトインデックス
  • ツリー(バイナリツリー)構造を使用する-すべてのノードに平均検索時間
  • を割り当てる.
  • 列値とrowidに基づいて計算されたアドレス割り当て
    4) Bitmap Index
  • アドレスは
  • 列の値とrowidを用いてバイナリの組合せの値
  • に変換する.
  • 頻繁に追加、挿入、削除する場合、効率が低下する
  • .
    5) Function-Based Normal Index
    インデックスは
  • に設定され、
  • 関数を持つカラムに適用されます.
  • whereセクションでは、インデックスを構成するために使用される関数など、条件文が最も有効です(フォーマットを使用します).
    CREATE[UNIQUE|BITMAP}INDEXインデックス名
    ONテーブル名(列名[,列名,...][ASC|DECS])
    -デフォルトはNON-UNIQUE INDEX
    使用例)
    CREATE INDEX IDX_PROD ON PROD(PROD_NAME);
      SELECT *
        FROM PROD
       WHERE PROD_NAME = '삼성 캠코더';
       
       **인덱스 삭제
       DROP INDEX 인덱스명;
       DROP INDEX INX_PROD;
       
  • 例)定期的にカート表で月/日/回のデータを検索する
    この検索の効率化のためのインデックスの構成
       CREATE INDEX IDX_CART
        ON CART(SUBSTR(CART_NO,5));
        
        SELECT * 
          FROM CART
         WHERE SUBSTR(CART_NO,5)='050300002';
         
         DROP INDEX IDX_CART
    2)インデックスの再構築

  • データベース・テーブルが別のストレージ・スペースに移動しました.

  • ソーステーブルにI/Oが頻繁に表示された後、=>インデックスを再構築する必要があります
    (フォーマットを使用)
    ALTER INDEXインデックス名REBUILD;