2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Oracleでインデックスが断片化した時の対処

Last updated at Posted at 2019-03-29

はじめに

  • 何かテーブルにSQL投げたのに返ってこないみたいな時は、テーブルのインデックスが断片化してるかも
  • 大量件数の削除、投入を繰り返していると起きやすいかも
  • インデックス断片化時の対処について備忘用に書く

インデックスの断片化対処の手順

  • 調査したいテーブルのインデックス一覧を取得
select index_name from user_ind_columns where table_name = '調査したいテーブル名' order by index_name;
  • インデックスの統計情報を更新
analyze index 調査したいテーブル名 validate structure;
  • インデックスの統計情報を更新
select name, height, lf_rows, del_lf_rows from index_stats WHERE name = '調査したいインデックス名';
実行結果例
NAME                         HEIGHT    LF_ROWS DEL_LF_ROWS
---------------------------- ---------- ---------- -----------
調査したいインデックス名        1         21           0

height・・・インデックスの深さ
lf_rows・・・リーフ行の数
del_lf_rows・・・削除されたリーフ行の数

  • 断片率はdel_lf_rows / lf_rowsで計算できるよ

インデックスの再構築

  • 断片化がやばそうならインデックス再構築する
alter index 再構築したいインデックス名 rebuild;
2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?