■
- 検索パターンは3つ
- 全表検索、インデックス範囲検索、インデックスユニーク検索
- テーブル結合方法
- ネステッドループ、ハッシュ結合、マージ結合
- データベースの中身の仕組み
- カーディナリティ
- カーディナリティが高いというのは社員IDなどのこと。カーディナリティが低いものは性別とか。
- カーディナリティが低くても、偏りがある場合、インデックスは有効に使われる。
- インデックス
- インデックスをはるべきカラム
- where句で指定されるようなカラム
- テーブルの結合列(外部キー)
- インデックスをはると更新時間が2倍かかる場合がある。
- ただし、インデックスをはっている列を更新した場合は早くなることがある。これは、インデックスの更新を先に行い、データベースの更新を非同期で行っているからと推測される。
- インデックスをはるべきカラム
- 内部結合
- 両方のテーブルに存在するデータだけをかえす。
- 外部結合
- 片方のテーブルにしかないデータだけをかえす。
- 内部結合も外部結合も処理速度に差はない。
- 複合インデックス
- 複数の列からなるインデックス
- 検索条件に、第一キーを入れないで、第二キー以降を検索条件にした場合は、インデックスが通常使われない。(データベース製品によっては使われることもある。)
ToDo:MySQLでテーブルの結合の方法としてwhere句を指定するのと、join句を指定するのと何が違うのか調査。(慣例としてどちらを使用するのが普通か?)