0

以前のプログラマーによって作成されたオンライン レジストリに取り組んでいます。郵便番号と都市に関連する一連のデータ整合性の問題を修正する必要があります。カナダの郵便番号のテーブルと登録者のテーブルのデータを使用して、大規模な更新クエリを実行しようとしています。私の開発環境では、クエリに文字通り無限の時間がかかるようです。理由がわからない。

Create Temporary Table RegistrantToChange AS (
SELECT 
    intID, vcCity, vcPostalCode
FROM
    tblRegistrantWebsiteSignUps
WHERE
    vcPostalCode NOT LIKE '00%' AND vcPostalCode!=''
        AND (vcCity = '' OR vcCity = 'unspecified')
);


UPDATE RegistrantToChange, tblPostalCodes
SET 
    vcPostalCode = tblPostalCodes.PostalCode
WHERE
vcCity = tblPostalCodes.CityName;

恐ろしく一貫性のない命名を許してください。私は最近このプロジェクトを引き継いだばかりで、まだ全体をリファクタリングしている最中です。

4

1 に答える 1

0

一時テーブルの vcCity はインデックス化されていません。tblPostalCodes.CityName がインデックス化されていない場合、更新の JOIN には多くの作業が必要で、時間がかかる場合があります。

最初に vcCity のインデックスを使用して一時テーブルを作成し、次に INSERT...SELECT を実行してデータを入力することをお勧めします。tblPostalCodes.CityName がインデックス化されていることを確認してから、更新を実行してください。

于 2013-08-06T18:25:30.887 に答える