- - PR -
PKインデックスの再構築
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-02-20 11:35
データ数が多いかつデータのInsert&Deleteが頻繁に行われるテーブルについて
プライマリキーインデックスのサイズが大きくなってしまいました。 普通のインデックスはRebuildすれば再構築できると思うのですが、 プライマリキーインデックスについてはやはりデータの エクスポート&TRUNCATE&インポートしかないのでしょうか? | ||||||||
|
投稿日時: 2007-02-20 11:51
今日は。
文章からしてSQL Serverであると想定して。 DBCC DBREINDEX http://msdn2.microsoft.com/ja-jp/library/ms181671.aspx で可能です。 または ALTER INDEX http://msdn2.microsoft.com/ja-jp/library/ms188388.aspx [ メッセージ編集済み 編集者: NAO 編集日時 2007-02-20 11:55 ] | ||||||||
|
投稿日時: 2007-02-20 12:00
あ!すいません、環境書き忘れました。
Oracle9iです。 | ||||||||
|
投稿日時: 2007-02-20 13:00
ALTER INDEX 〜 REBUILD
で。 | ||||||||
|
投稿日時: 2007-02-20 13:13
なるほど、プライマリキーインデックスでも
REBUILDできるんですね。 DROP&CREATEしようとしたところ エラーが出たのでREBUILDもだめかと思っていました。 普通のINDEXでREBUILDおよびDROP&CREATEを行いました。 DROP&CREATEのほうが格段にサイズの縮小という点で効果が出て、 REBUILDの場合はいまいちだったのですが、 REBUILDした後のインデックスのデータイメージは DROP&CREATEとは違うのでしょうか。 どちらもばらばらになったり歯抜けになったインデックスを 順番に詰めて並べ替えるというイメージでいたのですが・・。 | ||||||||
|
投稿日時: 2007-02-20 13:23
外部キーで参照されたりしてたのではないでしょうか。 もしくはALTER TABLE DROP CONSTRAINTではなく、DROP INDEXしようとしたとか。
サイズはどのようにして確認しましたか? | ||||||||
|
投稿日時: 2007-02-20 13:29
外部キーは設定していません。
確かにDROP INDEXしていました・・。 ALTER TABLE DROP CONSTRAINTについて調べてみます。 サイズの確認は SELECT * FROM dba_segments WHERE SEGMENT_TYPE = 'INDEX' ORDER BY OWNER,SEGMENT_NAME; で全INDEXの情報を持ってきました。 これのBYTES列を見て確認しています。 | ||||||||
|
投稿日時: 2007-02-20 13:50
これはOracleの作り(というかロジック)になるので 誰も答えられないと思います |