4

5,000 万件を超えるレコードを持つデータベース テーブルがあり、検索を改善するために非クラスター化インデックスを作成する必要がありました。一度作成すると、作成に 5 ~ 10 分かかるため、バックグラウンドでデータを並べ替えていると思います。インデックスに。

たとえば、テーブル検索にインデックスを追加する前は、ひどく時間がかかり、クラスター化されていないインデックスを追加すると、検索が高速になりました。

しかし、それは私が5000万のレコードを持っていたときだけでした.

問題は、テーブルにデータを追加する前に、テーブルを作成するときに最初にインデックスを定義した場合はどうなるかということです。今得ているのと同じ検索パフォーマンスが得られるでしょうか? または、データを定期的にソートするために、時々インデックスを削除して再作成する必要がありますか?

私の質問がばかげているように思われた場合は申し訳ありません。私はインデックスについて学び始めたばかりで、私にとって紛らわしいトピックです。

4

4 に答える 4

2

ola hallengren による無料のスクリプトをチェックしてください。1 つは、インデックスのメンテナンスと統計に関するものです。

一般的な経験則、

10 ~ 30 パーセントのインデックスの断片化、再編成。

断片化 > = 30 %、再構築。

再編成では、統計を更新する必要があります。

再構築は自動的にそれを行います。

インデックス作成は、クエリのパフォーマンスを最適化する上で非常に重要です。

  • ジョン

http://ola.hallengren.com/

于 2013-09-27T19:06:54.307 に答える
1

問題のテーブルにデータを挿入する前に、インデックスを作成できます。インデックスは、行が挿入または更新されるたびに単純に更新されます。これは、更新が問題のインデックスに含まれるフィールドに影響を与えることを前提としています。

行が挿入されると、インデックスがフラグメント化されて、インデックスが目的の論理順序またはインデックス内の行を維持できるようになる場合があります。たとえば、インデックスに A、B、E などの行があり、C または D を含む行を追加した場合、インデックスは分割され、新しい行は B と E の間に収まります。この断片化は、Olla Hallengren のスクリプトを Crafty として修復できます。 DBA は彼の回答で言及しましたが、システム ストレージの構成方法によっては、これが何の役にも立たない場合があります。

http://www.brentozar.com/sql/index-all-about-sql-server-indexes/を参照して、SQL Server のインデックス作成に関する優れた情報を確認してください。

于 2013-09-27T19:32:00.377 に答える