★DBCC DBREINDEX(テーブル名) を実行したところ、バッチ処理の速度が半分の時間で処理されるように
なった。効果が高い(2007/1/17)
「SQL Server2005の次のバージョンからは、削除される可能性があるので、新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに ALTER INDEX を使用してください。」とのことです。
DBCC SHOWCONTIG と DBCC DBREINDEX について
http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4¤t_page=1&disp_mode=4&detail_mode=1&message_id=15627
インデックスの再構築を実行しましたがスキャン密度が改善されません。
【インデックスの再構築実行】
USE MKGWare
GO
DBCC DBREINDEX (てーぶる名,'',60)
GO
http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4¤t_page=1&disp_mode=4&detail_mode=1&message_id=15636
インデックス ID が 0 は ヒープ(実データ、インデックスではない) なので、断片化は解消できません。
どうしても解消したい場合は、bcp とか DTS とかでデータをファイルにエクスポートして、
インポートしますが、データ量が 5 エクステントなので、断片化を解消しても、速度はほとんど
変わらないと思います。それよりも、次のコマンドを実行して、
他のインデックスが断片化しているかどうかを調べた方がよいと思います
(速度が遅くて困っているのであれば、ですが...)。
DBCC SHOWCONTIG('テーブル名') WITH ALL_INDEXES
http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4¤t_page=35&disp_mode=4&ispre=0&mid=7682
http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4¤t_page=1&disp_mode=4&detail_mode=1&message_id=7663
DBCC INDEXDEFRAGを実行すればよいです。
なお、やたらめったにインデックスの再構築をするのではなく、インデックスの状態を確認してからにしたほうがよいとおもいますが。DBCC SHOWCONTIG と実行して、スキャン密度が低いテーブル、論理スキャンフラグメンテーションの大きなテーブル、ページ数の多いテーブル、アプリケーションからの利用が多いテーブルにはというところをチェックしてみてください。
効率的なインデックスの作成について
http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4¤t_page=1&disp_mode=4&detail_mode=1&message_id=7421
DBCC SHOWCONTIG('テーブル名') WITH ALL_INDEXES
で調べて
DBCC INDEXDEFRAG (データベース名,テーブル名,インデックス名)
でインデックスの断片化を実行