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

MongoDB:Thứ tự chỉ mục và thứ tự truy vấn phải khớp nhau?

Thứ tự của các điều kiện trong truy vấn của bạn không ảnh hưởng đến việc nó có thể sử dụng chỉ mục hay không.

Ví dụ:cấu trúc tài liệu điển hình:

{
    "FieldA" : "A",
    "FieldB" : "B"
}

Nếu bạn có một chỉ mục kết hợp trên A và B:

db.MyCollection.ensureIndex({FieldA : 1, FieldB : 1})

Sau đó, cả hai truy vấn sau sẽ có thể sử dụng chỉ mục đó:

db.MyCollection.find({FieldA : "A", FieldB : "B"})
db.MyCollection.find({FieldB : "B", FieldA : "A"})

Vì vậy, thứ tự của các điều kiện trong truy vấn không ngăn chỉ mục được sử dụng - mà tôi nghĩ đó là câu hỏi bạn đang hỏi.

Bạn có thể dễ dàng kiểm tra điều này bằng cách thử 2 truy vấn trong shell và thêm .explain() sau khi tìm thấy. Tôi chỉ làm điều này để xác nhận và cả hai đều cho thấy rằng chỉ mục kết hợp đã được sử dụng.

tuy nhiên, nếu bạn chạy truy vấn sau, truy vấn này sẽ KHÔNG sử dụng chỉ mục vì FieldA không được truy vấn trên:

db.MyCollection.find({FieldB : "B"})

Vì vậy, thứ tự của các trường trong chỉ mục xác định liệu nó có thể được sử dụng bởi một truy vấn chứ không phải thứ tự của các trường trong chính truy vấn (đây là những gì Lucas đề cập đến).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Giới thiệu về Máy chủ Percona cho MongoDB 4.2

  2. Không thể kết nối với mongodb bằng ip máy

  3. asticsearch v.s. MongoDB để lọc ứng dụng

  4. Làm thế nào để xóa tài liệu bằng cách truy vấn hiệu quả trong mongo?

  5. XFS vs EXT4 - So sánh Hiệu suất MongoDB trên AWS EC2