考虑到性能改进,我想知道是否以及哪些索引对连接表有用(特别是在Rails 3 has_and_belongs_to_many上下文中使用).
我的模型是Foo和Bar每个rails惯例,我有一个名为的连接表bars_foos.没有主键或时间戳使老油田在该表bar_id:integer和foo_id:integer.我有兴趣知道以下哪个索引是最好的,没有重复:
add_index :bars_foos, [:bar_id, :foo_id]add_index :bars_foos, :bar_idadd_index :bars_foos, :foo_id基本上,我不确定复合索引是否足够,假设它有助于开始.我相信复合索引可以用作第一项的单个索引,这就是为什么我很确定使用所有三行肯定会导致不必要的重复.
最常见的用法将给出一个模型实例Foo,我将要求bars使用RoR语法关联它foo.bars,反之亦然,bar.foos用于模型的实例Bar.
这些将产生的类型的查询SELECT * FROM bars_foos WHERE foo_id = ?和SELECT * FROM bars_foos WHERE bar_id = ?分别然后使用这些所得ID来SELECT * FROM bars WHERE ID in (?)和SELECT * FROM foos WHERE ID in …