0

次のような表があります。

名前1 (キー)|名前2(キー)|合計|最終更新日

そのようなレコードは数十万になります。

非常に頻繁に、私のメイン プログラムはソースにクエリを実行して、更新された値を取得します。その後、合計と最終更新が更新されます。そのような行を何百も更新しなければならない場合があります。

現在、私はこれを持っています:

Update mytable SET Total=[...] AND LastUpdate=[....] WHERE Name1='x' AND Name2='y';
Update mytable SET .....

行を更新するより高速な方法があるかどうか疑問に思っています (同時に複数の行を挿入する方法と同様)。

Totals は完全に異なりますが、LastUpdate 時間は各 Update で同じになります。

明確にするための更新:

total への変更は単なる増分ではなく、現在の値に依存しないため、その点では決定論的ではありません。ソースは約 1 秒ごとに新しい値を提供するので、新しい値を入力する必要があります。

4

1 に答える 1

0

更新を個別に行うのが遅い場合は、このようなことを行うことができます。

CREATE TABLE mytable_updates
(
  Name1 VARCHAR(50) NOT NULL,
  Name2 VARCHAR(50) NOT NULL,
  total_increase INT NOT NULL
  PRIMARY KEY(Name1, Name2)
)

INSERT INTO mytable_updates VALUES ('x', 'y', 5), ('x', 'z', 3);
...

UPDATE mytable_updates 
LEFT JOIN mytable USING (Name1, Name2)
SET
  Total = Total + total_increase,
  LastUpdate = NOW();
于 2012-07-11T08:44:10.313 に答える