2011-02-04 8 views
0

Rails 2.3.5を使用しています。Rails acts_as_audited - 最初にIDでインデックスを作成するのはなぜですか?

ADD_INDEX:監査、[:auditable_id、 :auditable_type]、:名=> 'auditable_index'

それが思わacts_as_auditedで

は、スキーマ定義は、インデックスを定義します私は、インデックスがあるべきこと:

ADD_INDEX:監査、[:auditable_type、 :auditable_id]、:名前=> 「auditable_index」一般的に

は、ポリモーフィックな関連で、我々は時々だけのタイプで検索したいかもしれませんが、めったにタイプなしIDで検索しませんか?

これは、プラグインのみを使用して1つのテーブルを監査するときに、auditable_idによる検索を許可するための怠惰な方法ですか?

また、この方法でインデックスを作成する別の理由がありますか?

答えて

0

答えはちょうど私に起こりました。

一部のデータベースでは、複数フィールドのインデックス作成はサポートされていないため、これらのデータベースでは最初のフィールドのみがインデックスされます。あなたが私の別の索引付けをすると、クラス名でクラスター化されたデータが得られます。そのデータベースでは、特定のIDを見つけるために順次スキャンを実行する必要があります。これは、IDを検索してクラス名を確認するよりも時間がかかることになります。

もう1つの理由は、インデックスの最初のフィールドが十分明確ではない場合、SQLオプティマイザはインデックスを使用しないと分かりやすいということです。

関連する問題