2016-11-25 8 views
0

私が作業している現在のサイトでは、DWH読み込みとはまったく異なる処理が行われるため、データの作成と読み込みに関する他の開発者の意見を聞くことに興味があります。MSSQLデータの作成と読み込み

現在、ファクトテーブルをロードするために使用されるプロトコルにはいくつかのステップがあります。無PK /クラスタ化インデックスを持つ

  1. ドロップ古いテーブル
  2. 再作成表
  3. ロードクリーン/新しいデータ
  4. 多くの仕事が本当にどのようになるPK私は思ったんだけど&インデックス

を作成します。ステップ4のカバーの下に?データはClusterdインデックスなしでロードされるので、データロードの自然な順序がディスク上の順序を定義していると仮定しています。手順4.でプライマリキー(クラスタ化)を作成すると、ディスク上のデータをその順序に並べ替えます。データをロードし、PK/Clustered Indexをすでに定義してサーバーの負荷を軽減する方が良いのではないでしょうか?

+0

インデックスと同じ順序でデータがすでに注文されている場合のみ。そうでなければ、インデックスは常に更新されなければならないでしょう –

+0

@RichBennerそれは正しくありません。クラスタード・インデックスは、行の実際の格納順序に影響します。行が移動する –

+0

@PanagiotisKanavos私の更新のおかげで、私は間違ったコメントを削除しました。 –

答えて

0

inserting大量のレコードの場合、インデックスを更新する際のオーバーヘッドは、ゼロから単純に作成するよりも大きくなることがあります。パフォーマンスの向上は、insertingから、テーブルにデータを取得する最も効率的な方法であるヒープにもたらされます。

インデックスをそのまま残してインポートの方が速いかどうかを知る唯一の方法は、自分の環境でテストして比較することです。

0

私の考えによれば、インデクサーは選択に適しています。 DML操作には悪い可能性があります。

大量のデータを読み込んでいる場合は、挿入するたびにインデクサーを更新する必要があります。これはパフォーマンスを遅らせる可能性があります。時には限界を超えてしまうこともあります。

関連する問題