次のコマンドに基づいて、既存のデータベースの主キーを自動生成されたシステムから複合キーに変更するための移行を追加しました。
add_index :listings, [:telephone, :name, :latitude, :longitude] , :unique=>true
私の質問は次のとおりです。
コマンドによって生成されたインデックスは整数になりますか? すべてのパラメータ フィールドが文字列であるためです。
データベースが作成された後にこのコマンドを実行すると、すべての行のキーが再生成されますか、それとも別のコマンドを実行する必要がありますか?
このコマンドを実行すると違いはありますか? テーブルに行が追加された後にこれを実行するのではなく、これを実行したときにテーブルに行がなかった場合は?
ありがとう
以下の投稿を読んだ後に編集:========================================== =========
これは私のモデルです:
# Table name: listings
#
# id :integer not null, primary key
# name :string(50) default("ERROR:Not Available"), not null
# telephone :string(15) default("ERROR:Not Available"), not null
# latitude :string(15) default("ERROR:Not Available"), not null
# longitude :string(15) default("ERROR:Not Available"), not null
# avatar :string(30) default("Not Available")
ご覧のとおり、主キーはシステムによって自動生成された ID です 上記のコマンドを追加すると、正確には何が行われるのでしょうか? 4 つの列の値に基づいて生成された整数になるように id フィールドを変更したと思います。
ご想像のとおり、同じ名前の人が 2 人以上存在する可能性があります。したがって、ここで一意性を保証する唯一の真の方法は、4 つの列に基づいてある種のインデックスを作成することです。
上記のコマンドを使用して、正しいことを行っていますか? それはクエリを高速化するために機能しますか?