1

SQLで使用しているスクリプトは40,000近くのレコードで動作し、UPDATEコマンドを使用すると実行時間が大幅に増加することに気づきました。

それぞれに10個のフィールドがある2つのテーブルでは、INSERTは、このUPDATEコマンドよりも結合された両方に対してより高速に実行されます。

UPADTE table1
INNER JOIN table2 ON table1.primarykey = table2.primarykey
SET table1.code = table2.code

UPDATEが実際に行っているのは、同じレコードが存在する1つのテーブルから別のテーブルにコードをコピーすることです。これは、table1が2つのデータベース間のステージングテーブルであり、table2が複数のテーブルにステージングテーブルのデータを挿入するための所有テーブルであるためです。約40,000である同じ数のレコード

UPDATEは、2つの同一のテーブルを接続し、1つのフィールドにデータを挿入するだけなので、10のフィールドで40,000のレコードが作成される2つのINSERTよりも高速に実行されるはずです(つまり、800,000のピースを挿入します)。データの)そして私はphpタイムアウトを避けるためにSQLコンソールウィンドウでクエリを実行しています

UPDATEはINSERTよりもリソースを消費し、高速化する方法はありますか(処理に別のテーブルを使用するという事実を変更する以外に、ステージングテーブルは頻繁に更新されるため、スナップショットのようにデータをコピーして操作しますつまり、コードフィールドは最初はNULLなので、コードがNULLでないレコードは、すでに処理されていることを意味するNULLコードのレコードのみをコピーします)

4

1 に答える 1

2

そのUPDATEコマンドは実際のSQLですか?テーブル内のすべてのレコードの更新を回避するためにWHERE句が必要なため...

また、INSERTは、最初に2つの結合されたテーブルから更新するレコードを見つける必要はありません。

于 2012-08-16T03:46:11.320 に答える