0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

インデックスとは何ぞや 

Posted at

いまいち理解していないインデックスについて勉強中、、、。
自分なりにまとめてみた。

##インデックスとは
DBのテーブルに大容量のデータがあるとき、高速で目的のデータを取り出すためのもの。
頻繁に検索対象になるカラム(webサービスとかの利用者テーブルならログインIDとか、、)を取り出して、その並び順を格納したもの
SQLのWHERE句とかIN句とか<、>を使うときに使用される。
インデックスを使った方が早いとか、使わない方が早いとかは勝手に自動判断してくれるらしい、、。

##メリットもデメリットもある
インデックスは索引みたいなもの!索引があった方が検索は早くなる。とくにデータ量が多い時なら。
しかし、データ量が然程多くないなら、あまりインデックスは効果を発揮しない。
それどころか、UPDATEやINSERT処理はオーバーヘッドが生じてしまう。つまり、インデックスを再作成する処理が+αで走るので逆に時間がかかる。
しかし、大容量のテーブル程UPDATEよりSELECT処理の方が負荷が高いのでインデックスを使った方がいい。

##複合インデックス
複数のカラムをインデックスに用いたもの。
例えばこんな感じに使う↓

ユーザーテーブル(インデックス:ログインID、パスワード)

ログインID パスワード 名前 登録日時 更新日
001a aaaaa 佐藤 2020/01/01 00:00:00 2020/03/01 00:00:00
002b bbbbb 伊藤 2020/01/02 00:00:00 2020/03/02 00:00:00
003c ccccc 後藤 2020/01/03 00:00:00 2020/03/03 00:00:00
004d ddddd 加藤 2020/01/04 00:00:00 2020/03/04 00:00:00

こんなテーブルがあったとき、SQL分のWHERE句が 
・WHERE ログインID = ? AND パスワード = ?
・WHERE ログインID = ?
ならインデックス使える!でもインデックスの2個目のカラムであるパスワードから始まっていたら使えない。↓
・WHERE パスワード = ?

##参考
https://qiita.com/towtow/items/4089dad004b7c25985e3

0
0
1

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?