【mysql】テーブルにインデックスを追加する方法

この記事について

環境mysql
目的既存のテーブルにインデックスを追加する
結果CREATE INDEX か ALTER TABLE ADD INDEX で追加。show index fromで確認

つまずきポイント要約

  • TEXT型などはキー長を明示しないと「used in key specification without a key length」エラーになる

mysqlで、既存のテーブルにインデックスを追加する方法

CREATE INDEX インデックス名 ON テーブル名(フィールド名);

もしくは、

ALTER TABLE テーブル名 ADD INDEX インデックス名(フィールド名);

インデックス名は下記のように省略可。

ALTER TABLE テーブル名 ADD INDEX (フィールド名);

この場合、インデックスのフィールド名がそのままインデックス名となる。

TEXT型など一部の型にインデックスの追加を試みると、エラーになる場合がある。

エラーメッセージ

BLOB/TEXT column 'text_field' used in key specification without a key length

対処法。適当にキー長を明示する。

ALTER TABLE テーブル名 ADD INDEX インデックス名(フィールド名(100));

最後にインデックスできてるかを確認。

確認コマンド

show index from テーブル名

関連記事

タイトルとURLをコピーしました