Thứ tự của các trường trong chỉ mục quan trọng; chỉ mục kết hợp tốt nhất cho ví dụ tìm và sắp xếp của bạn thực sự sẽ là:
db.test.ensure_index([("xxx",1),("_id",-1)])
Vì tiêu chí tìm kiếm của bạn nằm trên trường 'xxx', đặt trường này đầu tiên trong chỉ mục sẽ tìm thấy nhiều kết quả hơn là tìm kiếm theo _id
và sau đó lọc các tài liệu phù hợp với xxx
của bạn tiêu chí.
Nếu bạn nhìn vào n
số cho mỗi kế hoạch được trình tối ưu hóa truy vấn xem xét trong allPlans
, BtreeCursor xxx_1
chỉ mục thực sự trả về nhiều kết quả nhất (34). Các chỉ mục khác trả về kết quả 9, 10 và 16 .. do đó sẽ kém hiệu quả hơn đối với các tiêu chí tìm kiếm đã cho.
Để biết thêm thông tin về tối ưu hóa chỉ mục, bài viết này rất hữu ích: Tối ưu hóa chỉ mục tổng hợp MongoDB .