[Schema: key_id, x,y,z,...]
一意で増分シードが 1 のキー ID 列を持つテーブル Aがあります。現在[schema: key_id, key_idOfA, x,y,z,....]
、同様のスキーマを持つ A のバックアップであるテーブル B があります (差分テーブル B のみが独自のkey_id
ものを持ち、元のkey_id
表Aの)。
where句に基づいてAからBにいくつかの行を転送するサービスがあります。このサービスを一度試してみたところ、A から B に行を転送することで問題なく動作しました。今度は、このサービスをもう一度確認するために、B から A に行 (key_idOfA、x、y、z、...) を転送する必要がありました。
ここでテーブルAの元のkey_idが失われないようにするために、最初に使用しました
SET IDENTITY_INSERT A ON
正常に機能した行を転送しました。乗り換え後に使った
SET IDENTITY_INSERT A OFF
サービスを再度実行すると、テーブル A からいくつかの行を取得するのに多くの時間がかかり、タイムアウトが発生します。正確に言えば、SQL Server Management Studio で 30,000 行を取得するのに 5 分かかります。サービスからのクエリは、3 分のタイムアウトによりタイムアウトになります。
テーブルのID挿入のオンとオフを切り替えるのは悪い習慣であることは承知していますが、これはテストベッドDBであり、本番DBでは決して行いません。
私の質問:
クエリに非常に時間がかかっているため、インデックス作成が台無しになっていますか? それとも何か他の問題がありますか?
インデックス作成を台無しにすることなく行を転送する別のアプローチをとることはできたでしょうか?