MySQLのきほん「インデックス」

スポンサーリンク
person s hand on laptop MySQL
Photo by Pixabay on Pexels.com

インデックスは、データベースの索引である。

インデックスを利用すれば、目的のレコードにダイレクトにアクセスできるようになる。

それでは、実際に操作してみよう。

まずは、mysqlクライアントを起動しよう。

PS C:\Users\vinta> mysql -u myusr -p
Enter password: *****

続いて、basicデータベースに移動しよう。

mysql> USE basic;
Database changed

SELECT 命令の状況を確認しよう

インデックスを設置していない状態で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: 0

SELECT 命令の状況を確認しよう

インデックスを設置した状態で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版]  山田奈美(著)山田祥寛(監修)技術評論社

コメント

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