当多个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
希望这样的事情是可能的? 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命名约定。