0

データベースに2つの大きなテーブルがあり、テストのためにテーブルをコピーしました(select * from online_table to backup_table with (NOLOCK) )postfix _backupを使用して同じDBにコピーしました。バックアップ テーブルで、nvarchar(50) 列の datetime 形式への変換を開始します。それらの後、主キーといくつかのインデックスを設定しました。インデックスのコピー、変換、およびセットアップを開始する前に、データベース バックアップを [簡易] に設定し、ステップの後で完全バックアップ モードに戻します。

問題は、データベースがオンライン テーブルで非常に遅いことです。2 つのテーブルを結合するストアド プロシージャは、多くの場合、完了するまでに 1 分以上かかります。通常は 1 秒以内に終了します。説明した手順の 1 時間後、ストアド プロシージャの速度に問題はなくなりました。それらは以前と同じように機能し、インデックスはすべて良好で、断片化は 1% 未満です。テーブルを nolock でコピーするため、オンライン テーブルには影響しません。誰かが問題を知っていて、おそらく解決策を持っていますか? または、この手順を実行する他の方法がありますか?

4

1 に答える 1

0

これは、メモリ内のキャッシュが原因である可能性があります。SQL サーバーは RAM を使用してストアド プロシージャをキャッシュします。そのため、ストアド プロシージャがキャッシュされると、通常の状態に戻るはずです。Brent はストアド プロシージャのキャッシングをうまく説明しています。

于 2015-03-24T19:38:31.617 に答える