2

夜、

3,000 万行近くの大規模でシンプルなテーブルがあります。テーブルには、ほとんどの列のインデックスがあります。更新を実行するのに長い時間がかかります。テーブルへの変更が完了したら、インデックスを削除して再構築することをお勧めしますか?

私が質問する理由は、大きなテーブルでインデックスを再構築できなかった投稿をここで読んだことがあるためです。ただし、このテーブルを 2.2 GB のテキスト ファイルから 20 分でインポートできるため、その理由がわかりません。

テーブルは、いくつかの小さな int と varchar で構成されています。

私が実行した更新クエリは次のようなものでした:

UPDATE census SET rCo = 11470 WHERE rCo = 'Zet';

それほど遅くはありませんでしたが、現在、フィールドの 1 つを varchar(4) から varchar(8) に変更していて、非常に長い時間がかかっています。

コマンドライン (Linux) から更新クエリを実行しました。

4

1 に答える 1

2

where句で使用しているので、インデックスを保持する必要があると思います。

一方、まったく新しいテーブルを作成する必要があると確信しています。

CREATE TABLE census_2 (...) 
SELECT ..., IF(rCo = 'Zet', 11470, rCo) FROM census

その後、古いものを削除し、+ 後で新しいものにインデックスを再作成します。

于 2012-06-01T00:52:25.890 に答える