Индекс MongoDB
Без индекси, MongoDB би трябвало да сканира всеки файл в колекцията и да избира онези записи, които отговарят на критериите за заявки при четене на данни.
Този вид ефективност при сканиране на целия набор е много ниска, особено при обработка на голямо количество данни, заявката може да отнеме десетки секунди или дори минути, което е много фатално за производителността на сайта.
Индексите са специални структури от данни, съхранявани в колекция от данни, които лесно могат да се четат върху индекс, а индексите са структура, която сортира стойностите на една или повече колони в таблица на база данни.
Преглед:
Запитване към плана за изпълнение
Примерни твърдения:
Без да се създава индекс (winningPlan:COLLSCAN), както е показано на фигурата по-долу:
Функцията explain() също може да получава различни параметри, а можете да видите по-подробен план за заявки, като зададете различни параметри.
Параметрите включват:queryPlanner (по подразбиране)、executionStats、allPlansExecution
Execute explain("executionStats") и ще откриете, че има повече статистики в плана за изпълнение.
| параметър | значение | | totalКлючовеРазгледани | Брой индексни сканирания | | totalDocsПрегледани | Брой сканирания на документи | | nВърнал се | Броят на върнатите резултати | | екзекуцияTimeMillis | Изпълнението отнема много време | | Изпълнение Успех | Дали екзекуцията е била успешна |
Създай индекс
MongoDB използва метода createIndex() за създаване на индекси.
Обърнете внимание, че преди версия 3.0.0 методът за създаване на индекс беше db.collection.ensureIndex(), а по-късните версии използваха метода db.collection.createIndex().
Създай единен индекс
Създайте съставен индекс
В синтаксиса ключовата стойност е индексното поле, което искате да създадете, 1 се задава за създаване на индекс в нарастващ ред, а ако искате да създадете индекс в низходящ ред, можете да зададете -1.фон, за да се уточни, че индексите се създават във заден план, тоест добавете "фонов" опционален параметър. "Фон" по подразбиране означава false.
Индекси за заявки
Командата е следната:
Изтрий индекса
Изтрийте всички индекси
Изтрийте посочения индекс
(Край)
|