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

Защо посоката на индекса има значение в MongoDB?

MongoDB конкатенира съставния ключ по някакъв начин и го използва като ключ в BTree.

При намиране на единични артикули - Редът на възлите в дървото е без значение.

Ако връщате диапазон от възли - Елементите близо един до друг ще бъдат надолу по същите клони на дървото. Колкото по-близо са възлите в обхвата, толкова по-бързо могат да бъдат извлечени.

С един индекс на поле - Редът няма значение. Ако са близо един до друг във възходящ ред, те също ще бъдат близо един до друг в низходящ ред.

Когато имате съставен ключ - Редът започва да има значение.

Например, ако ключът е A, възходящ B, възходящ, индексът може да изглежда така:

Row   A B
1     1 1
2     2 6
3     2 7 
4     3 4
5     3 5
6     3 6
7     5 1

Заявка за A възходяща B низходяща ще трябва да прескача индекса извън ред, за да върне редовете и ще бъде по-бавна. Например ще върне ред 1, 3, 2, 6, 5, 4, 7

Обхватна заявка в същия ред като индекса просто ще върне редовете последователно в правилния ред.

Намирането на запис в BTree отнема O(Log(n)) време. Намирането на диапазон от записи в ред е само OLog(n) + k, където k е броят на записите за връщане.

Ако записите не са в ред, цената може да бъде толкова висока, колкото OLog(n) * k



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $setIsSubset

  2. Как да премахнете елемента на масива в mongodb?

  3. Съображения за администриране на MongoDB

  4. MongoDB $type Оператор на конвейер за агрегиране

  5. MongoDB - Сортиране на резултатите от заявка