0

私は 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_indexkey

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です。

私は何か間違ったことをした?私は何が欠けていますか?

4

1 に答える 1

0

ああ、すみません、これは私の注意の欠如でした。name上記で説明した手順は、パラメーターをメソッドに渡す限り正常に機能しますadd_index

于 2012-04-23T13:59:38.507 に答える