この記事について
| 環境 | 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 テーブル名
