LoginSignup
17
19

More than 5 years have passed since last update.

MySQLのindex(インデックス)って何?

Last updated at Posted at 2018-06-07

indexを調べる経緯

「MySQlnのindexって知ってる?」
そう、上司は私に問いかけました。
社会人1年目、ろくにコマンドプロンプトを叩いた経験も仮想サーバを作った経験もない私はただ一言「わかりません」と答えるしかありませんでした。
上司に大まかに「indexってのは...」と教えていただきました。そこである程度は理解しましたが詳細までは分かっていません
そして「じゃあ、indexについて調べて理解を深めろ」とのことだったのでつい先日、Qiitaに登録したというのもあり、ここで自身なりにまとめようと思いました。

MySQLとは?

そもそもMySQLとは何?何のためのもの?
MySQLはSQLのデータベース言語の一つでデータベースの定義や操作を行うことが出来る。

https://ja.wikipedia.org/wiki/SQL

indexとは?

データテーブルとは別に検索用に最適化された状態でデータが保存されている。
このindexを使うことで、目的のレコードを迅速に見つけることが出来できる。

http://ja.wikipedia.org/wiki/索引_%28データベース%29

indexはどんな時に使う?&メリット

  • 特定のカラム値のある行を素早く見つける
  • テーブル内のデータ量が多く、少量のレコードを検索する場合
  • WHERE句の条件、結合の条件、ORDER BY句の条件として頻繁に利用する
  • ソート作業を省略出来る

indexを使わない時&デメリット

  • 表の規模が小さいか、表から大部分のレコードを検索する場合
  • 格納されているデータが少ないテーブル
  • 格納されているデータ種類が少ない。
  • NULL値が多く、NULL以外の値を検索しない場合

indexの種類

  1. Bツリーとビットマップ
    1. Bツリーとビットマップ(カーディナリティが高い、定型のSQL文の場合)
    2. Bツリー索引(カーディナリティが低い場合)
  2. 索引構成表
  3. 索引クラスタ(ハッシュ・クラスタ)

まとめ

現状、indexを調べ、それを考えながらの書き込みでしかないので表面的なことしかかけていませんでした。
ここから実際に使い始めればより、深く理解することが出来ると思います。
とりあえず、簡単にindexはデータ量が多い時やソートする時には便利だがindexを使用しないことも普通にあるということはわかりました。
今後、深掘りしていきたいと思います。

17
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
19