2016-11-21 6 views
1

パフォーマンスに関してどちらが良いかを質問したいだけです。基本的に、ストアドプロシージャが低下し、テーブルを再作成し、それにクラスタ化インデックスを作成します。クラスタ化インデックスまたはクラスタ化インデックスなしでテーブルにレコードを挿入

Iは

OPTION

1. DROP TABLE Statement 
2. SELECT INTO Statement 
3. CREATE CLUSTERED INDEX 

注を有するストアド・プロシージャを作成しています。

私が作成したものに比べてこの方が良ければいいと思っています。

オプションB

1. TRUNCATE TABLE Statement 
2. INSERT INTO Statement 

注:表がすでにクラスタ化インデックスを持っているので、私のOPTION Bとクラスタ化インデックスのない創造はありません。

ありがとうございました皆さん、この1つで私を助けてくれるでしょう。

+1

あなたはどちらが優れているかを確認するために両方を(実行計画で)比較しましたか? –

+2

答えは、このような質問になるとほぼいつも「それは依存する」ものであり、あなた自身のためにいくつかのテストを行うのが最も良い方法です。 [この記事では「どちらが速いのですか?」を読むことをお勧めします。質問](https://ericlippert.com/2012/12/17/performance-rant/) – GarethD

答えて

0

一般的に、データを挿入した後でインデックスを作成する方が良いです。

編集:私は投票しているようですので、私は少しこれを修飾する必要があると思った。 「一般的に」という言葉に気づいてください。これは常に真実ではなく、複数の人がすでに両方を試してみることを提案しています。

しかし、経験則として、これは本当です。大量のデータを読み込む際の標準的な方法は、テーブルのインデックスを削除するか、無効にしてからデータを読み込んだあとでインデックスを再構築することです。

についての類推のために、なぜであるかは、書籍の索引を書くのと同じだと考えてください。ブックをランダムな順序で書き、ページを追加してインデックスを更新する場合は、インデックス内のエントリを頻繁に移動してルームを作成する必要があります。書籍全体が書かれるまで待っていれば、インデックスをもっと効率的に書くことができます。

関連する問題