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

Tôi đã trải qua hệ thống đường sắt của Michael Hartl và nhận thấy anh ấy đang sử dụng thứ được gọi là nhiều chỉ mục chính. Tôi biết nó có nghĩa là Active Record sử dụng cả hai khóa cùng một lúc, nhưng tôi không thực sự chắc chắn những lợi thế và bất lợi của việc sử dụng nhiều chỉ mục chính là gì.Chỉ mục nhiều khóa là gì?

Nếu có ai có thể đưa ra câu trả lời, tôi sẽ đánh giá cao điều đó.

Trả lời

11

Bất kỳ chỉ mục nào cũng có thể mang lại lợi ích bằng cách cho phép truy vấn thu hẹp tập hợp các hàng để kiểm tra.

Chỉ mục nhiều cột có thể giúp khi truy vấn của bạn bao gồm các điều kiện trên nhiều cột đó.

Ví dụ:

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

Chỉ số nhiều cột thu hẹp xuống tập hợp con của hàng có liên quan đến user_id 123, thì trong thời hạn tập hợp con đó, nó tiếp tục thu hẹp sự lựa chọn cho những người có một created_at gần đây giá trị.

Nếu không có cột thứ hai trong chỉ mục, RDBMS sẽ phải tải tất cả các hàng cho user_id 123 vào bộ nhớ trước khi nó có thể xác định xem chúng có vượt qua tiêu chí hay không.

Để biết thêm thông tin, hãy xem bản trình bày của tôi How to Design Indexes, Really.

+0

Cảm ơn rất nhiều! Tôi chắc chắn sẽ kiểm tra bản trình bày của bạn. – jeebface

+0

Cảm ơn bạn đã liên kết bản trình bày! – finitud

0

Nói chung, khóa tìm kiếm có thể có nhiều thuộc tính mà chúng tôi gọi là khóa compsite hoặc nhiều khóa.

Ví dụ, hãy xem xét chỉ mục về quan hệ đại học. Đây là khóa tìm kiếm tổng hợp (course_id, year_of_enroll). Chỉ số như vậy sẽ rất hữu ích để tìm tất cả các sinh viên có id khóa học cụ thể và trong năm cụ thể họ đã đăng ký vào trường đại học. Quy trình tìm kiếm chỉ mục này sẽ xác định chính xác hồ sơ mong muốn của chúng tôi trong mối quan hệ.

Các vấn đề liên quan