MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB Много индекси срещу единичен индекс на масив от поддокументи?

Това основно се свежда до това дали 10 индекса с размер N са по-ефективни от един индекс с размер N * 10. Ако гледате само четенията, тогава отделните индекси винаги трябва да са по-бързи. Свързаните разходки на b-дърво ще изследват по-малък набор ключове и т.н.

Все пак има няколко точки, които трябва да имате предвид:

  • Индексите на масивни полета основно индексират всеки елемент от масива отделно. По този начин режийните разходи за търсене ще бъдат най-много 1-2 допълнителни стъпки по време на разходката на b-дървото, което е незначителен удар в производителността. С други думи, те ще бъдат почти толкова бързи.
  • Наличието на 10 индекса може да означава, че всяка актуализация/вмъкване ще изисква повече от един индекс да бъде актуализиран (в зависимост от това дали вашите индекси споделят поле или ако актуализирате повече от 1 времево клеймо наведнъж). Това е важно съображение за ефективност.
  • Използването на индекс на масив прави малко по-лесно добавянето на допълнителни времеви клейма (напр. Timestamp10).
  • Има ограничение за броя на пространствата от имена, които можете да използвате за база данни (24k) и всеки индекс заема едно. Ако направите отделен индекс за поле, това може да се превърне в проблем.
  • Най-важното е, че индексът на масива е много по-ясен и ще опрости кода ви и следователно поддръжката. Предвид ограничените разлики в производителността, бих казал, че това е най-силната мотивация да изберете индекс на масив тук.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Кога е добавен документ към колекция MongoDB

  2. Как да се свържете отново mongo автоматично в node.js сървър?

  3. Опитайте се да инсталирате mongodb с dijango?

  4. MongoDB - Експортиране на данни

  5. Вземете документи с етикети в списъка, подредени по общ брой съвпадения