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

MongoDB Nhiều chỉ mục so với Chỉ mục đơn trên mảng Tài liệu con?

Về cơ bản, điều này tóm tắt là nếu 10 chỉ mục của kích thước N hiệu quả hơn một chỉ mục của kích thước N * 10. Nếu bạn chỉ đơn thuần xem xét các lần đọc thì các chỉ mục riêng biệt phải luôn nhanh hơn. Các bước đi b-tree liên quan sẽ kiểm tra một bộ phím nhỏ hơn, v.v.

Tuy nhiên, có một số điểm cần xem xét:

  • Chỉ mục trên các trường mảng về cơ bản chỉ mục từng phần tử mảng riêng biệt. Do đó, chi phí tra cứu tối đa sẽ là 1-2 bước bổ sung trong quá trình đi bộ trên cây b-tree, đây là một tác động không đáng kể về hiệu suất. Nói cách khác, chúng sẽ nhanh như nhau.
  • Có 10 chỉ mục có thể có nghĩa là mỗi bản cập nhật / chèn sẽ yêu cầu nhiều hơn một chỉ mục được cập nhật (tùy thuộc vào việc các chỉ mục của bạn có chung một trường hay nếu bạn cập nhật nhiều hơn 1 dấu thời gian cùng một lúc). Đây là một cân nhắc hiệu suất đáng kể.
  • Việc sử dụng chỉ mục mảng giúp việc thêm dấu thời gian bổ sung (ví dụ:Dấu thời gian10) dễ dàng hơn một chút.
  • Có giới hạn về số lượng không gian tên bạn có thể sử dụng trên mỗi cơ sở dữ liệu (24k) và mỗi chỉ mục chiếm một. Nếu bạn tạo chỉ mục riêng biệt cho mỗi trường, điều này có thể trở thành một vấn đề.
  • Quan trọng nhất, chỉ mục mảng đơn giản hơn và sẽ đơn giản hóa mã của bạn và do đó có khả năng bảo trì. Với sự khác biệt hạn chế về hiệu suất, tôi muốn nói rằng đây là động lực mạnh nhất để tạo chỉ mục mảng ở đây.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo mở quá nhiều kết nối

  2. Truy vấn một trường trong một đối tượng trong mảng với Mongo?

  3. MongoDB $ strLenBytes

  4. MongoDB - Không thể chuẩn hóa truy vấn:Toán tử không xác định BadValue:$ meta

  5. Sao băng chạy trong một cụm và thay đổi theo thời gian thực