Engineering from Scratch

エンジニア目指してます

2022/06/25

外部キーのインデックス

rails を使用していると,referencesで外部キーに対して自動でインデックスが貼られる。しかし,そのインデックスの役割を正しく認識していなかった。

usersテーブルに対してpostsテーブルがuser_idを持っている時を考える。postsuser_idに対して,インデックスを貼っていない状態で,where 句にuser_idを指定して検索すると,postsテーブル全件に対して検索が走る。しかし,user_idに対してインデックスを貼ることで,検索対象のレコード数が減少し,高速化が見込まれる。

参考

https://www.amazon.co.jp/%E9%81%94%E4%BA%BA%E3%81%8C%E6%95%99%E3%81%88%E3%82%8BWeb%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E3%83%81%E3%83%A5%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0-%E3%80%9CISUCON%E3%81%8B%E3%82%89%E5%AD%A6%E3%81%B6%E9%AB%98%E9%80%9F%E5%8C%96%E3%81%AE%E5%AE%9F%E8%B7%B5-%E8%97%A4%E5%8E%9F-%E4%BF%8A%E4%B8%80%E9%83%8E/dp/4297128462