0

テーブルの列を更新すると、8 つの可能なプロセッサのうちの 1 つだけが使用される理由を説明できますか? そのようなプロセスは、利用可能なすべてのプロセッサに対して簡単に細分化できると思いますか?

クエリは次のようになります。

update
    My_Table
set
    column2 = 'Atlantic'
from
    My_Table
where
    column2 != 'Ocean'

問題のテーブルは約 6GB です。クエリ中の IO デルタは約 7MB/秒で、かなり低い値です。

サーバーはリモート マシンで、ユーザーは私だけです。並列処理が有効になっています。

私はおそらく使用すべきインデックスを使用していません。

アップデート

解決策としては、更新せずに、case ステートメントを使用してテーブルのコピーを選択することが考えられます。コピーが完了したら、古いテーブルを削除できます。もちろん、これは十分なディスク容量がある場合にのみ実行可能です。

4

1 に答える 1

0

私の最初の質問は、一般的にこれが最小の原因であるため、TRIGGER を持っているかということです。大量のデータがあるため、次の点を確認してください。

インデックスの更新
外部キー ルックアップ
外部キー カスケード
インデックス付きビュー
計算カラム
チェック制約
ロック
スナップショット分離
ファイルの増大

于 2012-07-25T18:17:49.397 に答える