#indexを調べる経緯
「MySQlnのindexって知ってる?」
そう、上司は私に問いかけました。
社会人1年目、ろくにコマンドプロンプトを叩いた経験も仮想サーバを作った経験もない私はただ一言「わかりません」と答えるしかありませんでした。
上司に大まかに「indexってのは...」と教えていただきました。そこである程度は理解しましたが詳細までは分かっていません
そして「じゃあ、indexについて調べて理解を深めろ」とのことだったのでつい先日、Qiitaに登録したというのもあり、ここで自身なりにまとめようと思いました。
#MySQLとは?
そもそもMySQLとは何?何のためのもの?
MySQLはSQLのデータベース言語の一つでデータベースの定義や操作を行うことが出来る。
#indexとは?
データテーブルとは別に検索用に最適化された状態でデータが保存されている。
このindexを使うことで、目的のレコードを迅速に見つけることが出来できる。
#indexはどんな時に使う?&メリット
- 特定のカラム値のある行を素早く見つける
- テーブル内のデータ量が多く、少量のレコードを検索する場合
- WHERE句の条件、結合の条件、ORDER BY句の条件として頻繁に利用する
- ソート作業を省略出来る
#indexを使わない時&デメリット
- 表の規模が小さいか、表から大部分のレコードを検索する場合
- 格納されているデータが少ないテーブル
- 格納されているデータ種類が少ない。
- NULL値が多く、NULL以外の値を検索しない場合
#indexの種類
- Bツリーとビットマップ
- Bツリーとビットマップ(カーディナリティが高い、定型のSQL文の場合)
- Bツリー索引(カーディナリティが低い場合)
- 索引構成表
- 索引クラスタ(ハッシュ・クラスタ)
#まとめ
現状、indexを調べ、それを考えながらの書き込みでしかないので表面的なことしかかけていませんでした。
ここから実際に使い始めればより、深く理解することが出来ると思います。
とりあえず、簡単にindexはデータ量が多い時やソートする時には便利だがindexを使用しないことも普通にあるということはわかりました。
今後、深掘りしていきたいと思います。