- PR -

PKインデックスの再構築

投稿者投稿内容
momo
常連さん
会議室デビュー日: 2006/11/06
投稿数: 35
投稿日時: 2007-02-20 11:35
データ数が多いかつデータのInsert&Deleteが頻繁に行われるテーブルについて
プライマリキーインデックスのサイズが大きくなってしまいました。
普通のインデックスはRebuildすれば再構築できると思うのですが、
プライマリキーインデックスについてはやはりデータの
エクスポート&TRUNCATE&インポートしかないのでしょうか?
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 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 ]
momo
常連さん
会議室デビュー日: 2006/11/06
投稿数: 35
投稿日時: 2007-02-20 12:00
あ!すいません、環境書き忘れました。
Oracle9iです。
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2007-02-20 13:00
ALTER INDEX 〜 REBUILD
で。 
momo
常連さん
会議室デビュー日: 2006/11/06
投稿数: 35
投稿日時: 2007-02-20 13:13
なるほど、プライマリキーインデックスでも
REBUILDできるんですね。
DROP&CREATEしようとしたところ
エラーが出たのでREBUILDもだめかと思っていました。

普通のINDEXでREBUILDおよびDROP&CREATEを行いました。
DROP&CREATEのほうが格段にサイズの縮小という点で効果が出て、
REBUILDの場合はいまいちだったのですが、
REBUILDした後のインデックスのデータイメージは
DROP&CREATEとは違うのでしょうか。
どちらもばらばらになったり歯抜けになったインデックスを
順番に詰めて並べ替えるというイメージでいたのですが・・。
カーニー
ぬし
会議室デビュー日: 2003/09/04
投稿数: 358
お住まい・勤務地: 東京
投稿日時: 2007-02-20 13:23
引用:

momoさんの書き込み (2007-02-20 13:13) より:
なるほど、プライマリキーインデックスでも
REBUILDできるんですね。
DROP&CREATEしようとしたところ
エラーが出たのでREBUILDもだめかと思っていました。



外部キーで参照されたりしてたのではないでしょうか。
もしくはALTER TABLE DROP CONSTRAINTではなく、DROP INDEXしようとしたとか。

引用:

普通のINDEXでREBUILDおよびDROP&CREATEを行いました。
DROP&CREATEのほうが格段にサイズの縮小という点で効果が出て、
REBUILDの場合はいまいちだったのですが、



サイズはどのようにして確認しましたか?
momo
常連さん
会議室デビュー日: 2006/11/06
投稿数: 35
投稿日時: 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列を見て確認しています。
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2007-02-20 13:50
引用:

REBUILDした後のインデックスのデータイメージは
DROP&CREATEとは違うのでしょうか。
どちらもばらばらになったり歯抜けになったインデックスを
順番に詰めて並べ替えるというイメージでいたのですが・・。


これはOracleの作り(というかロジック)になるので
誰も答えられないと思います

スキルアップ/キャリアアップ(JOB@IT)