【DB・SQL】インデックスとは?〜作成や削除方法まで徹底解説!

【DB・SQL】インデックスとは?〜作成や削除方法まで徹底解説! データベース
スポンサーリンク

はじめに

ぴんくうさぎ
ぴんくうさぎ

インデックスってよく聞くけど大事な知識なの?

みどりがめ
みどりがめ

インデックスはシステムの性能を担保するためにも

現場ではよく使う技術の一つだよ。
今回は、インデックスを実際にDBに適用する方法を

紹介するよ!

この記事で分かること
  • そもそもインデックスとは何か
  • インデックスの作成方法
  • インデックスの削除方法

インデックス(INDEX)とは?

テーブルとは別に検索するために最適化された状態のデータのことです。

分厚い書籍から目的のページを見つけ出すために使用する索引をイメージいただければと思います。

いちいち、本の冒頭から確認しては時間がかかってしまいますよね。

データベースも同じで、インデックス(INDEX)を貼ることで目的のデータを効率よく取得できるようになります。

インデックス(INDEX)の基礎知識

インデックスはどういう時に使うのか

インデックスの使用する時は例えば、「検索処理が遅いと感じたとき」、「主キー以外のカラムで検索処理を行い処理が遅くなることが想定されるとき」などです。上述の通り、インデックス(INDEX)を貼ることで目的のデータの検索処理のスピードが上がります。

インデックスは何に対して貼るのか

また、貼る対象のカラムとしては、検索の条件やORDER BY句、min()やmax()などの関数などを使用するもの、結合のキーなどが挙げられます。また、テーブルの主キーには自動的にインデックス(INDEX)が貼られます。

インデックスのメリットとデメリット

  • メリット
    →データの検索処理のスピードが速くなります。
  • デメリット
    →データの更新系の処理スピードは遅くなります。(実際のデータとは別にインデックスも更新しなければならないため。)

検索が早くなるからといって、むやみにインデックスを貼るのではなく、パフォーマンスに影響がある(ありそう)なところに適用するのが良いでしょう。

インデックス(INDEX)の作成方法・確認方法

ここでは、実際にインデックスの作成方法について紹介していきます。
最初に要点のみ記載します。実際の使い方が気になる方は以降もご覧ください。なお、本記事の実行環境はMySQLです。

既存のテーブルにインデックスを追加する場合
ALTER TABLE テーブル名 ADD INDEX インデックス名(カラム名);
テーブルのインデックスを確認する場合
SHOW INDEX FROM テーブル名;

まずは、DMLでtaskテーブルを作成します。

create table if not exists task(
id INT PRIMARY KEY,
title VARCHAR(50),
content VARCHAR(100)
);

テーブルが作成できたら、下記で現在のインデックスの状態を確認します。
主キーである「id」のカラムにインデックスが貼られていることが確認できました。

SHOW INDEX FROM task;
INDEXの確認

次にtitleにもインデックスを貼ってみます。

ALTER TABLE task ADD INDEX task_title(title);

もう一度、SHOW INDEXで確認してみます。
titleにもインデックスが貼られたことが確認できました。インデックス名は「Key_name」に入っていますね。

インデックスの確認

インデックス(INDEX)の削除方法

次にインデックスの削除方法です。

既存のテーブルにインデックスを削除する場合
ALTER TABLE テーブル名 DROP INDEX インデックス名;

「インデックス(INDEX)の作成方法・確認方法」にて作成した「title」のインデックスを削除していきます。

ALTER TABLE task DROP INDEX task_title;

SHOW INDEXで確認してみると、削除されたことを確認できました。

インデックスの削除確認

終わりに

本記事はここまでとなります。ご覧いただきありがとうございました。

ご指摘等がございましたら頂けますと嬉しいです。
引き続き、プログラミングについて定期的に発信していきますのでよろしくお願いします!
また、もしよろしければtwitterもフォローしていただけると嬉しいです。

コメント