内容
インデックスによる高速化の典型的なパターン3つをまとめる。
1. WHERE 句による絞り込み
-- インデックスのある列を WHERE 句に指定する(完全一致検索)
SELECT * FROM movie WHERE genre_id = 1;
上の例の場合、genre_id カラムにインデックスが作成されている時、高速に検索結果を得ることができる。
DBMSによっては、前方一致検索でもインデックスを利用した高速な検索が行われることがある。
ただし、部分一致検索や後方一致検索ではインデックスを利用することができない。
2. ORDER BY による並び替え
-- インデックスのある列を ORDER BY 句に指定する
SELECT * FROM movie ORDER BY genre_id;
インデックスには並び替えを高速化する効果もあるため、ORDER BY の処理が速くなる。
3. JOIN による結合の条件
-- インデックスのある列を JOIN の結合条件に指定する
SELECT * FROM movie JOIN genre ON movie.genre_id = genre.id;
結合処理は内部で並び替えを行っているため、インデックスのある列を使うと高速になる。
参考図書:スッキリわかるSQL入門 第2版