add_index在Rails 3中不起作用

时间:2012-04-23 13:48:54

标签: mysql ruby-on-rails database rails-migrations database-indexes

我在Rails 3.2.3应用程序中,我正在为数据库迁移中的外键添加索引。但是,在运行迁移后,密钥似乎不会被编入索引。我已经通过mysql控制台直接测试了。这就是我所做的,更好地描述:

我有一个与Car模型相关的Owner模型,例如:

class Car
  belongs_to :owner
end

class Owner
  has_many :car
end

由于那些是现有的数据库表,我创建了另一个迁移来添加索引,我把它放在:

add_index :cars, :owner_id, name: "owner_index"

然后我运行了迁移,根据Rails,一切都很顺利。但是当我登录我的mysql并运行EXPLAIN查询时,我在owner_index列中看不到key

mysql> EXPLAIN SELECT * FROM cars WHERE owner_id = 41;
+-------------+------+---------------+---------+-------+---------+-------------+
| select_type | type | key           | key_len | ref   | rows    | Extra       |
+-------------+------+---------------+---------+-------+---------+-------------+
| SIMPLE      | ref  | NULL          | 5       | const |  108    | Using where | 
+-------------+------+---------------+---------+-------+---------+-------------+
1 row in set (0.00 sec)

理论上(根据this post),上一个查询中的键列应返回owner_index而不是NULL

我做错了吗?我错过了什么?

1 个答案:

答案 0 :(得分:0)

哦,对不起,这只是我的注意力不足。只要您将name参数传递给add_index方法,上述步骤就可以正常工作。