私は Rails 3.2.3 アプリを使用しており、データベースの移行で外部キーのインデックスを追加しています。ただし、移行を実行した後、キーにインデックスが作成されていないようです。私はmysqlコンソールから直接テストしました。それが私がやったことであり、よりよく説明されています:
次のようなモデルにCar
関連するモデルがあります。Owner
class Car
belongs_to :owner
end
class Owner
has_many :car
end
それらは既存のDBテーブルだったので、インデックスを追加するために別の移行を作成しました。
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
です。
私は何か間違ったことをした?私は何が欠けていますか?