【发布时间】:2016-10-26 19:35:50
【问题描述】:
当存在多个JOINs 时,有没有办法强制在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
希望这样的事情是可能的吗?
【问题讨论】:
-
哪个数据库?通常数据库会决定是否使用索引。如果您在正确的字段上创建索引,并且数据库的查询规划器认为该索引对您提交的查询有意义,它将使用该索引。
-
@DaveSlutzkin 那很好,但至少 MySQL 在使用现有索引时有时会做出非常糟糕的决定。
-
我们看实际查询,加上
SHOW CREATE TABLE。也许我们可以改变一些东西来达到目的。
标签: mysql ruby-on-rails ruby activerecord indexing