当多个JOIN
存在时,有没有办法在Rails中强制使用活动记录的JOIN
上的索引?
我希望将结束SQL生成为:
SELECT *
FROM table1
INNER JOIN table2
ON table1.id = table2.id
INNER JOIN table3 USE INDEX('my_index')
ON table2.new_id = table3.new_id
希望这样的事情可能吗?
答案 0 :(得分:4)
Rails不支持开箱即用的连接。但是你总是可以写一个字符串到joins
来描述你想要的东西:
Post
.joins(:author)
.joins("INNER JOIN comments USE INDEX('myindex') ON comments.post_id = posts.id")
我使用posts
,users
和comments
代替table1
到table3
,因为table1
等不遵循Rails命名约定