1

SQL Server 2012 に現時点で2500000 行の大きなテーブルがありますCreate as clustered: Yesuniqueidentifier将来、代わりに日付列にクラスターを作成します)。

問題は、これがタイムアウトになることです。インデックスのクラスタリングを無効にするのに時間がかかるのはなぜですか? そして、この操作のタイムアウトを 24 時間に増やすことを除いて、これをスピードアップしてタイムアウト前に終了するにはどうすればよいでしょうか?

4

1 に答える 1

2

これはクラスター化されたインデックスであるため、削除するとテーブル全体がヒープとして再構築されるため、長い時間がかかります。また、多くの行がある場合 (およびテーブルが特に広い場合)、これには長い時間がかかる可能性があります。 IOパフォーマンスに応じて時間。

また、これは一意であることが保証されていないため、日付列にクラスター化インデックスを追加することを慎重に検討することをお勧めします (したがって、SQL サーバーはクラスター化キーに一意化子を追加し、その効率と他のすべての非クラスター化インデックスの効率を低下させます)。また、日付が常に昇順または降順で追加されない場合は、テーブルがフラグメント化され、SQL サーバーがページ分割を実行して、値がテーブルの最後ではなく中央に収まるように強制されます。

クラスタリングに最適な列は、狭く、一意で、値が常に増減する列です。ID 列は最適な候補です。

于 2013-03-11T12:40:25.527 に答える