0

3つの質問 モデルを作成すると、foreign_keyも自動的に作成されますか?Rails:外部キーと索引付け時期

私は、カラムがテーブルにユニークであるか、一般的にユニークであるとき、またはカラムが他のデータベースと関連するときにadd_indexを行うべきだと思っています。Amirite?

インデックスはどのように見えるのですか?それは単にセルの内容を使用するのだろうか?

enter image description here

答えて

3

1)発電機を使用するときは、意味しますか?一般的に言えば、モデル/スキャフォールディング全体でジェネレータを使用するのではなく、マイグレーションを生成する必要があります。そして、いいえ、外部キーは、指定した場合にのみ、自動的には作成されません。

2)add_indexはデータベースにアクセスしてにすばやくアクセスする必要がある大きな列の列に便利になります。たとえば、email列を持つusersの表がユニークである必要がありますが、索引付けされていないとします。そしてあなたのサービスは成長し、今では何百万人ものユーザーがおり、User.find_by_email "[email protected]"に移動する必要があります。インデックスがなければ、それはあなたにしばらく時間がかかります。インデックスを使用すると、すばやく表示されます。インデックスが役立つのはそのときです。

3)本当にデータベースエンジンafaikに依存します。あなたの日常的なイホに影響するものではありません(特定のデータベースエンジンを念頭に置いていれば、確かに見つけることができます)。ここでは、MySQLの情報は、ソースから直接https://dev.mysql.com/doc/refman/5.5/en/column-indexes.html

+0

だから、モデルを生成するので、マイグレーションを書く、より良い練習ですか?また、私はそれを理解したと思う。ですから、私がt.referencesメソッドを使用するときに、私は外部キーを作成していますか? – PudparK

+1

いいえ - モデルを生成する必要はありません。マイグレーションを生成し、モデルを記述します。そして、マイグレーション内の 'index:true'はcolをインデックスとしてマークしますが、実際にインデックスを追加する方法もあります。 – ezuk

+0

それは一束をクリアします。どうもありがとう! – PudparK

関連する問題