我在 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)
理论上(根据这篇文章),前一个查询中的键列应该返回owner_index
而不是NULL
。
我做错了什么吗?我错过了什么?