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: