インデックスは、データベースの索引である。
インデックスを利用すれば、目的のレコードにダイレクトにアクセスできるようになる。
それでは、実際に操作してみよう。
まずは、mysqlクライアントを起動しよう。
PS C:\Users\vinta> mysql -u myusr -p
Enter password: *****続いて、basicデータベースに移動しよう。
mysql> USE basic;
Database changedSELECT 命令の状況を確認しよう
インデックスを設置していない状態でSELECT 命令を実行した場合、どれだけ手間がかかるのか確認する。
以下の通り、入力しよう。
なお、このbasicデータベースには、usrテーブルにあらかじめレコードが登録してあるものとする。
mysql> EXPLAIN SELECT uname FROM usr
    -> WHERE uname = '山田祥寛'\G以下の通り、表示されれば、成功である。
mysql> EXPLAIN SELECT uname FROM usr
    -> WHERE uname = '山田祥寛'\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: usr
   partitions: NULL
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 8
     filtered: 12.50
        Extra: Using where
1 row in set, 1 warning (0.00 sec)「key: NULL」と表示されている。
インデックスを作成しよう
usrテーブルのunameフィールドに対してインデックスを作成しよう。
以下の通り、入力しよう。
mysql> CREATE INDEX idx_usr ON usr (uname);以下の通り、表示されれば、成功である。
mysql> CREATE INDEX idx_usr ON usr (uname);
Query OK, 0 rows affected (0.15 sec)
Records: 0  Duplicates: 0  Warnings: 0SELECT 命令の状況を確認しよう
インデックスを設置した状態でSELECT 命令を実行した場合、どれだけ手間がかかるのか確認する。
以下の通り、入力しよう。
mysql> EXPLAIN SELECT uname FROM usr
    -> WHERE uname = '山田祥寛'\G以下の通り、表示されれば、成功である。
mysql> EXPLAIN SELECT uname FROM usr
    -> WHERE uname = '山田祥寛'\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: usr
   partitions: NULL
         type: ref
possible_keys: idx_usr
          key: idx_usr
      key_len: 62
          ref: const
         rows: 1
     filtered: 100.00
        Extra: Using index
1 row in set, 1 warning (0.01 sec)「key: idx_usr」と表示されている。
インデックスを削除しよう
それでは、作成したインデックスを削除しよう。
以下の通り、入力しよう。
mysql> DROP  INDEX idx_usr ON usr;以下の通り、表示されれば、成功である。
mysql> DROP  INDEX idx_usr ON usr;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0今回は、ここまでである。mysqlクライアントを終了しよう。
mysql> exit
Bye
PS C:\Users\vinta>(参考)3ステップでしっかり学ぶ MySQL入門 [改訂第3版] 山田奈美(著)山田祥寛(監修)技術評論社

 
 

コメント