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

thời gian tìm kiếm có chỉ mục> không có chỉ mục

Trong trường hợp này, chỉ mục không hữu ích vì tập kết quả phù hợp của bạn bao gồm gần như toàn bộ tập hợp. Điều đó có nghĩa là nó phải tải vào RAM và duyệt qua hầu hết các chỉ mục, cũng như tải vào RAM và tự duyệt các tài liệu.

Nếu không có chỉ mục, nó sẽ chỉ thực hiện quét bảng, kiểm tra từng tài liệu và trả lại nếu khớp.

Trong những trường hợp như thế này khi một truy vấn sẽ trả về gần như toàn bộ tập hợp, một chỉ mục có thể không hữu ích.

Thêm .limit () sẽ tăng tốc truy vấn. Bạn cũng có thể buộc trình tối ưu hóa truy vấn không sử dụng chỉ mục với .hint ():

db.collection.find().hint({$natural:1})

Bạn cũng có thể buộc truy vấn cung cấp các giá trị kết quả trực tiếp từ chính chỉ mục bằng cách giới hạn các trường đã chọn chỉ những trường bạn đã lập chỉ mục. Điều này cho phép nó tránh phải tải bất kỳ tài liệu nào sau khi quét chỉ mục.

Hãy thử điều này và xem liệu đầu ra giải thích có chỉ ra "indexOnly":true không

db.numbers.find({number: {$gt: 10000}}, {number:1}).explain()

Thông tin chi tiết tại đây:

http://www.mongodb.org / display / DOCS / Retrieving + a + Subset + of + Fields # RetrievingaSubsetofFields-CoveredIndexes




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb $ trong chống lại một trường các đối tượng của mảng thay vì các đối tượng của mảng

  2. Không thể kết nối với mongoDB cục bộ từ java

  3. Mongodb có lập lại chỉ mục nếu bạn thay đổi trường mà nó được sử dụng trong chỉ mục không?

  4. Mối quan tâm về ghi mongod mặc định trong phiên bản nào?

  5. Hàm Mongodb findOneAndUpdate đang chèn tài liệu mới