add_index :microposts, [:user_id, :created_at]
私はマイケル・ハートルの鉄道を調べていて、彼がマルチキーインデックスと呼ばれるものを使用していることに気づきました。Active Recordが両方のキーを同時に使用することを意味することは知っていますが、複数のキーインデックスを使用することの長所と短所が何であるかはよくわかりません。
誰かが答えることができれば私はそれを大いに感謝します。
add_index :microposts, [:user_id, :created_at]
私はマイケル・ハートルの鉄道を調べていて、彼がマルチキーインデックスと呼ばれるものを使用していることに気づきました。Active Recordが両方のキーを同時に使用することを意味することは知っていますが、複数のキーインデックスを使用することの長所と短所が何であるかはよくわかりません。
誰かが答えることができれば私はそれを大いに感謝します。
クエリで調査する行のセットを絞り込むことができるため、どのインデックスでもメリットがあります。
複数列のインデックスは、クエリにそれらの複数の列の条件が含まれている場合に役立ちます。
例えば:
SELECT * FROM Mytable WHERE user_id = 123 AND created_at > '2013-02-01'
複数列のインデックスは、user_id 123に関連付けられている行のサブセットに絞り込み、そのサブセット内で、最近created_at値を持つ行にさらに絞り込みます。
インデックスに2番目の列がない場合、RDBMSは、user_id 123のすべての行をメモリにロードしてから、それらが基準に合格するかどうかを判断する必要があります。
詳細については、私のプレゼンテーション 「インデックスを設計する方法」を参照してください。
一般に、検索キーには、複合キーまたは複数キーと呼ばれる複数の属性を含めることができます。
例として、大学関係の指標を考えてみましょう。ここに複合検索キー(course_id、year_of_enroll)があります。このようなインデックスは、特定のコースIDを持つすべての学生、特に大学に入学した年を見つけるのに役立ちます。このインデックス検索プロセスは、関連する目的のレコードを正確に決定します。