-1

ユーザーがDB内のいくつかの列を更新できるようにするC#アプリがあります。私の問題は、DBに300.000レコードがあり、50.000を更新するだけで30分かかったことです。私は物事をスピードアップするために何かをすることができますか?

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

UPDATE SET UM = 'UM', Code = 'Code' WHERE Material = 'MaterialCode'. 

私の唯一のユニークな制約はマテリアルです。ユーザーが選択したファイルを読み取り、データをデータテーブルに配置してから、行ごとに移動して、DB内の対応する資料を更新します。

4

3 に答える 3

1

特にアプリケーションがデータを頻繁に更新する場合は、データベース内のインデックスの数を制限します。これは、各インデックスがディスクスペースを占有し、行の追加、削除、更新が遅くなるため、新しいインデックスは、データ、実行されるクエリのタイプと頻度、およびクエリが新しいインデックスをどのように使用するか。

多くの場合、新しいインデックスを作成することの速度の利点は、使用される追加のスペースとゆっくりと行を変更することの欠点を上回ります。ただし、冗長インデックスの使用は避け、必要な場合にのみ作成してください。読み取り専用テーブルの場合、インデックスの数を増やすことができます。

于 2012-04-06T15:46:43.760 に答える
1
  1. 更新が頻繁に行われる場合は、テーブルで非クラスター化インデックスを使用します。

  2. 更新/挿入が頻繁でない場合は、テーブルでクラスター化インデックスを使用します。

  3. C# コードは問題にならない可能性があります。更新ステートメントは重要です。update ステートメントの Where 句は、注目すべき場所です。where句にインデックス付きの列が必要です。

于 2012-04-06T15:51:59.827 に答える
0

もう 1 つ、フィールド マテリアルは索引付けされていますか? また、where 句は varchar 値を持つフィールドにある必要がありますか? 整数値のフィールドにすることはできませんか?

文字列ではなく整数を含むフィールドでフィルタリングすると、パフォーマンスが向上します。これが可能かどうかはわかりません。

于 2012-04-06T23:44:51.420 に答える