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

Как MongoDB избира планове за кандидати

Ако дадена заявка може да бъде удовлетворена от множество индекси, дефинирани в колекцията, MongoDB ще тества всички приложими индекси паралелно. Първият индекс, който може да върне 101 резултата, ще бъде избран от програмата за планиране на заявки. Има и други аспекти за избор на индекс, но като цяло това е вярно според Оптимизиране на заявки документация.

Този метод за избор на индекс може да избере неоптимален индекс. Това е така, защото от гледна точка на MongoDB имате множество индекси, които описват едно и също нещо. За да смекчите неоптималния избор на индекс, който наблюдавате, можете да направите:

  1. Премахнете всички други индекси, за които установите, че не са оптимални.

    Това е, за да се гарантира, че инструментът за планиране на заявки няма друг избор, освен да избере индекси, които сте съобразили с вашата заявка.

  2. Използвайте hint() метода

    hint() ви позволява изрично да кажете на MongoDB да използва предписания индекс за заявката. Например:

    db.tasks.find(...).hint({project: 1, created_by: 1})
    

    Моля, вижте https://docs.mongodb.com/v2. 6/reference/operator/meta/hint/ за повече информация относно hint() .

Друг нюанс във вашата заявка е, че тя включва $or оператор. В този случай всеки термин в $or изразът трябва да има индекс, свързан с него , в противен случай MongoDB ще извърши сканиране на колекция (BasicCursor в условията на MongoDB 2.6). Това е обяснено по-подробно на https://docs .mongodb.com/v2.6/reference/operator/query/or/#behaviors




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да използвам MongoDB с обещания в Node.js?

  2. Как да групирате в агрегат, но също така да показвате други полета с помощта на Mongo?

  3. Как mongodb създава база данни/колекция в движение

  4. Как да импортирате данни в mongoDB

  5. Защо mongoDB използва objectID?