0

「クリーンアップ」する必要がある大規模な住所データベースがあります。

たとえば、住所には郡が含まれていますが、常に同じフィールドにあるとは限りません。場合によっては address3 に、場合によっては address4 にある場合もあれば、まったくない場合もあります。

すべてをテーブルに入れ、County という名前の新しいフィールドを作成すると、php はデータ (テスト用に一度に 1000 行) を配列にロードします。

「CO」を検索します。アドレス 3 または 4 にあり、見つかった場合はそのセルの内容を「County」にコピーします。ここまでは順調ですね。

問題は、実行速度が非常に遅いことです。UPDATE として以下を使用します。

$update = "UPDATE 機会 SET County='" . $address4 . "' " . "WHERE id=" . $id;

各エントリに対して上記の行を実行するよりも高速な方法はありますか?

4

1 に答える 1

5

SQL で直接実行する方が高速ですが、その性質上、この種の文字列検索はかなり遅くなります。

UPDATE opportunities
SET    County = CASE
         WHEN address3 LIKE '%CO.%' THEN address3
         WHEN address4 LIKE '%CO.%' THEN address4
       END
于 2012-11-12T16:09:54.893 に答える