0

1 つのテーブルに 200 万を超える電話番号があり、電話番号フィールドからすべてのスペースを削除する必要があります。

電話フィールドにINDEXを付けてテーブルを最適化しましたが、次のクエリを実行すると非常に遅く、永遠に時間がかかります-実際、まだ待っていて、30分が過ぎました

UPDATE ACTNSW SET phone = REPLACE(phone, ' ', '');

それほど時間がかからないように、このプロセスをスピードアップする方法があるかどうかを知る必要があります.

使用しているデータベーススキームはInnoDB サーバーバージョン: 5.5.31-1 (Debian)

4

2 に答える 2

2

これは基本的な SQL クエリです。あなたはそれについて多くを行うことはできませんが
、テーブル全体に対して更新クエリを実行しないで、1つのことを行うことができます。..のような複数の更新クエリを作成します

UPDATE ACTNSW SET phone = REPLACE(phone, ' ', '') where id < .2 milian
UPDATE ACTNSW SET phone = REPLACE(phone, ' ', '') where id < .4 milian and id > .2 milian
UPDATE ACTNSW SET phone = REPLACE(phone, ' ', '') where id > .5 milian and id > .4 milian
....

役立つと思います。

于 2013-07-11T08:33:17.107 に答える