Mysql:14億のレコードにインデックスを作成する
14億レコードのテーブルがあります。テーブルの構造は次のとおりです。 CREATE TABLE text_page ( text VARCHAR(255), page_id INT UNSIGNED ) ENGINE=MYISAM DEFAULT CHARSET=ascii 要件は、列にインデックスを作成することtextです。 テーブルサイズは約34Gです。 次のステートメントでインデックスを作成しようとしました。 ALTER TABLE text_page ADD KEY ix_text (text) 10時間待った後、ようやくこのアプローチをやめました。 この問題に対して実行可能な解決策はありますか? UPDATE:テーブルが更新、挿入、または削除されることはほとんどありません。列にインデックスを作成する理由textは、この種のSQLクエリが頻繁に実行されるためです。 SELECT page_id FROM text_page WHERE text = ? 更新:テーブルをパーティション分割することで問題を解決しました。 テーブルは、列で40個に分割されていますtext。その後、テーブルにインデックスを作成すると、完了するまでに約1時間かかります。 テーブルのサイズが非常に大きくなると、MySQLインデックスの作成が非常に遅くなるようです。また、パーティション化により、テーブルがより小さなトランクに縮小されます。