キチログ

Keep it simple, stupid.

MySQL5.7のインデックスを操作する方法

MySQL5.7のインデックス操作をメモ。

既存のテーブルにインデックスを追加する場合Syntax(書き方)が2通りあります。

  1. CRUDのSyntax
  2. ALTER TABLEのSyntax

カラムの変更などがあるときはALTER文で、インデックスの編集のみの場合はそれぞれのsyntaxで書けばいいと思います。

インデックスを作成する

CREATE INDEX idx_1 ON teams (created_at DESC)

or

ALTER TABLE teams ADD INDEX idx_2 (created_at DESC)

インデックスを削除する

DROP INDEX idx_1 ON teams

or

ALTER TABLE teams DROP INDEX idx_2

インデックス"名"を変更する

MySQL5.7からできるようになりました。 これはALTER TABLE Syntaxしか用意されてないようです。

ALTER TABLE teams RENAME INDEX idx_x TO idx_y

インデックスを変更する

キー部分の修正のことです。例えば、

(created_at DESC)としていたのを(user_id ASC, created_at DESC)に変えたいとか。もしくはそれと同時にインデックス名も変えたいとか。

ALTER TABLE構文でいうMODIFYやCHANGEをしたいみたいな。

しかし、インデックスではこれはできないので、一旦DROPしてから新たにCREATEするという手順になります。

DROP INDEX idx_1 ON teams;
CREATE INDEX idx_1_after ON teams (user_id ASC, created_at DESC);

参考