2013-02-13 1 views
6
add_index :microposts, [:user_id, :created_at] 

私はマイケル・ハートルの手引きを見て、という複数のキーインデックスという名前のものを使用していることに気付きました。 Active Recordが両方のキーを同時に使用していることは分かっていますが、複数のキーインデックスを使用するメリットとデメリットは何であるかわかりません。複数キーインデックスとは何ですか?

誰かが答えを与えることができれば、私は大いに感謝するでしょう。

答えて

11

インデックスを使用すると、クエリで検査する行のセットを絞り込むことができます。

複数列インデックスは、クエリに複数の列の条件が含まれている場合に役立ちます。例えば

:複数列インデックスがUSER_ID 123に関連付けられた行のサブセットに絞り込む

SELECT * FROM Mytable WHERE user_id = 123 AND created_at > '2013-02-01' 

、そのサブセット内で、それがさらに最近のcreated_at有するものに選択を絞り込みます値。

RDBMSは、すべてのuser_id 123の行をメモリーにロードして、条件を満たすかどうかを判断する必要があります。

詳細については、私のプレゼンテーションHow to Design Indexes, Reallyを参照してください。

+0

ありがとうございました!私はあなたのプレゼンテーションをチェックアウトします。 – jeebface

+0

プレゼンテーションリンクありがとう! – finitud

0

一般に、検索キーには、複合キーまたは複数のキーと呼ばれる複数の属性を含めることができます。

たとえば、大学関係に関する指標を考えてみましょう。ここで複合検索キー(course_id、year_of_enroll)。そのような指数は、特定のコースIDを持つすべての学生、特に大学に入学した年を見つけるのに役立ちます。 この索引検索プロセスは、関連する希望のレコードを正確に決定します。

関連する問題