MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách MongoDB chọn kế hoạch ứng viên

Nếu một truy vấn có thể được thỏa mãn bởi nhiều chỉ mục được xác định trong bộ sưu tập, MongoDB sẽ kiểm tra tất cả các chỉ mục áp dụng song song. Chỉ mục đầu tiên có thể trả về 101 kết quả sẽ được người lập kế hoạch truy vấn chọn. Có những khía cạnh khác để lựa chọn chỉ mục, nhưng nói chung điều này đúng theo Tối ưu hóa Truy vấn tài liệu.

Phương pháp lựa chọn chỉ mục này có thể chọn một chỉ số phụ tối ưu. Điều này là do theo quan điểm của MongoDB, bạn có nhiều chỉ mục mô tả cùng một thứ. Để giảm thiểu lựa chọn chỉ mục tối ưu phụ mà bạn đã quan sát, bạn có thể thực hiện:

  1. Xóa tất cả các chỉ mục khác mà bạn phát hiện ra là dưới mức tối ưu.

    Điều này nhằm đảm bảo rằng người lập kế hoạch truy vấn không có lựa chọn nào khác ngoại trừ việc chọn các chỉ mục mà bạn đã điều chỉnh cho phù hợp với truy vấn của mình.

  2. Sử dụng hint() phương pháp

    hint() cho phép bạn thông báo rõ ràng cho MongoDB sử dụng chỉ mục được chỉ định cho truy vấn. Ví dụ:

    db.tasks.find(...).hint({project: 1, created_by: 1})
    

    Vui lòng xem https://docs.mongodb.com/v2. 6 / tham chiếu / toán tử / meta / gợi ý / để biết thêm thông tin về hint() .

Một sắc thái khác trong truy vấn của bạn là nó bao gồm $or nhà điều hành. Trong trường hợp này, mọi thuật ngữ trong $or biểu thức phải có chỉ mục được liên kết với nó , nếu không MongoDB sẽ thực hiện quét bộ sưu tập (BasicCursor trong MongoDB 2.6 điều khoản). Điều này được giải thích chi tiết hơn tại https:// docs .mongodb.com / v2.6 / tham chiếu / toán tử / truy vấn / hoặc / # hành vi




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - tài liệu lồng nhau của $ dự án ở cấp độ gốc

  2. Cấu trúc liên kết ném Mongo bị phá hủy sau một lần kết nối

  3. Cách tạo phiên trong Node.js

  4. Định cấu hình GridFS Chunksize trong MongoDB

  5. toán tử pushOrModify like cho mongo subocument