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

Mongodb:Tác động đến hiệu suất của $ HINT

Bạn có thể vui lòng chỉ định chỉ mục phức hợp mà bạn đã tạo. Tôi không có nhiều danh tiếng nên không thể hỏi điều này trong bình luận, nhưng tôi có thể có một người có thể trả lời câu hỏi của bạn.Mongo sử dụng một thuộc tính có tên là "Equality-Sort-Range" hoạt động theo một cách khác. Hãy xem xét tình huống dưới đây-Bạn có một vài tài liệu có các trường {name:string, pin:sáu chữ số, SSN:chín chữ số} và bạn có hai chỉ số là - {name:1, pin:1, ssn:1} và chỉ mục thứ hai là {name:1, ssn:1, pin:1} bây giờ hãy xem xét các truy vấn dưới đây:

  1. db.test.find({name: "XYZ", pin: 123456"}).sort({ssn: 1}) Truy vấn này sẽ sử dụng chỉ mục đầu tiên vì chúng ta có chỉ mục kết hợp tiếp tục. Tên, mã pin, ssn vẫn tiếp tục.
  2. db.test.find({name: "XYZ", pin: {$gt :123456"}}).sort({ssn: 1}) Bạn sẽ mong đợi rằng chỉ mục đầu tiên sẽ được sử dụng trong truy vấn này. Nhưng đáng ngạc nhiên là chỉ mục giây sẽ được sử dụng bởi truy vấn này vì nó có một hoạt động phạm vi trên pin.

Thuộc tính Equality-sort-range cho biết rằng công cụ lập kế hoạch truy vấn sẽ sử dụng chỉ mục trên trường phân phối - tốt hơn "Equality-sort-range". Truy vấn thứ hai có phạm vi trên chân nên chỉ mục thứ hai sẽ được sử dụng trong khi truy vấn đầu tiên có giá trị bằng nhau trên tất cả các trường nên chỉ mục đầu tiên sẽ được sử dụng.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. làm thế nào để giải quyết lỗi giao dịch này trong mlab? [MongoError:Số giao dịch là ... hỗ trợ khóa cấp độ tài liệu]

  2. Truy vấn trong MongoDB

  3. Tôi có thể đọc tệp csv bên trong tệp Javascript của Mongo Shell không?

  4. Mongodb cập nhật số lượng tài liệu có hạn

  5. Ứng dụng NodeJS 2 dòng bị treo trên mongoose.connect () trong khi cố gắng kết nối với cơ sở dữ liệu mongolab MongoDB