0

高速ルックアップを保証し、2つの行が4つの列すべてに同じエントリを持たないようにするために、データベースの4つの列に基づいてインデックスを設定したいと思います。したがって、4つの列に基づいて一意性を確保します。これは他の言語やフレームワークで実行できることは知っていますが、Railsで実行できますか?

Railsにインデックスを設定する次のコマンドを見ました。

add_index "users", ["email"], :name => "index_users_on_email", :unique => true

ただし、複数の列に対して同様のことを行うことはできますか?

また、これが複数の列に対して実行できない場合、レール内の複数の列に基づく一意性をどのように処理するのでしょうか。

4

1 に答える 1

3

はい、Rails では複数の列にインデックスを作成できます。

add_index users, [email, col1, col2, col3], :name => "my_name", :unique => true 

動作するはずです。名前を指定する限り、問題ありません。

PostgreSQL (MySQL については不明) には制約名の文字制限があるためadd_index、複数の列に使用する場合は、カスタム名を指定するか、列名が制限内に収まるように十分に短いことを確認してください。自動生成さ index_users_on_col1_and_col2_and_col3れたものはあなたのために物事を台無しにする可能性があります.

于 2012-05-01T21:48:47.557 に答える