MongoDB Indeksowanie: createIndex() i dropIndex()

⚡ Inteligentne podsumowanie

MongoDB Indeksy przechowują uporządkowany podzbiór pól kolekcji, dzięki czemu zapytania mogą lokalizować dokumenty bez konieczności skanowania każdego rekordu. Metody createIndex, getIndexes i dropIndex budują, wyświetlają i usuwają te krytyczne dla wydajności struktury.

  • 🚀 Cel: Indeksy pozwalają MongoDB pomiń skanowanie całej kolekcji, aby szybciej dokonać odczytu.
  • 🛠️. utwórzIndeks: Tworzy indeksy jednopolowe lub złożone w kolejności rosnącej lub malejącej.
  • 🔍 pobierzIndexes: Wyświetla wszystkie indeksy w kolekcji, łącznie z domyślnym _id.
  • 🗑️ dropIndex: Usuwa jeden indeks; dropIndexes czyści wszystkie oprócz _id.
  • ⚖️. Kompromis: Zbyt duża liczba indeksów spowalnia operacje wstawiania, aktualizacji i usuwania.
  • 🤖 Strojenie sztucznej inteligencji: Asystenci automatycznie rekomendują i generują właściwe indeksy.

MongoDB Indeksowanie createIndex dropIndex

Jakie są MongoDB Indeksy?

Indeksy są bardzo ważne w każdej bazie danych MongoDB nie jest inaczej. Korzystając z indeksów, wykonując zapytania w MongoDB staje się bardziej wydajny.

Jeśli posiadasz kolekcję składającą się z tysięcy dokumentów bez indeksów i następnie wykonujesz zapytanie w celu znalezienia określonych dokumentów, to w takim przypadku MongoDB musiałby przeskanować całą kolekcję, aby znaleźć dokumenty. Ale gdybyś miał indeksy, MongoDB korzystałby z tych indeksów, aby ograniczyć liczbę dokumentów, które należało przeszukać w zbiorze.

Indeksy to specjalne zestawy danych, które przechowują częściową część danych kolekcji. Ponieważ dane są częściowe, ich odczyt staje się łatwiejszy. Ten częściowy zestaw przechowuje wartość określonego pola lub zestawu pól, uporządkowanych według wartości pola.

Zrozumienie wpływu indeksów

Mimo że we wstępie pokazano, że indeksy są przydatne w przypadku zapytań, zbyt duża liczba indeksów może spowalniać inne operacje, takie jak wstawianie, usuwanie i aktualizowanie.

Jeśli operacje wstawiania, usuwania i aktualizowania dokumentów są wykonywane często, indeksy muszą być często zmieniane, co jest jedynie obciążeniem dla kolekcji.

Poniższy przykład pokazuje, jakie wartości pól mogą stanowić indeks w kolekcji. Indeks może opierać się na jednym polu w kolekcji lub na wielu polach w kolekcji.

W poniższym przykładzie Employeeid „1” i EmployeeCode Indeksy „AA” służą do indeksowania dokumentów w kolekcji. Dzięki temu, po przeprowadzeniu wyszukiwania, indeksy te pozwolą na szybkie i efektywne znalezienie potrzebnych dokumentów w kolekcji.

Tak więc nawet jeśli zapytanie wyszukiwania opiera się na pracownikuCode „AA” – ten dokument zostanie zwrócony.

Zrozumienie wpływu indeksów

Jak tworzyć indeksy: createIndex()

Tworzenie indeksu w MongoDB odbywa się za pomocą utwórzIndeks Metoda.

Poniższy przykład pokazuje, jak dodać indeks do kolekcji. Załóżmy, że mamy tę samą kolekcję „Pracownicy”, której pola mają nazwy „Employeeid” i „EmployeeName”.

Utwórz indeksy za pomocą createIndex

db.Employee.createIndex({Employeeid:1})

Code Wyjaśnienie:

  1. utwórzIndeks metoda służy do tworzenia indeksu na podstawie „Employeeid” dokumentu.
  2. Parametr „1” oznacza, że ​​po utworzeniu indeksu z wartościami pola „Employeeid” należy je posortować rosnąco. Należy pamiętać, że różni się to od pola _id (które jednoznacznie identyfikuje każdy dokument), które MongoDB Tworzy się automatycznie. Dokumenty będą teraz sortowane według pola Employeeid, a nie _id.

Jeśli polecenie zostanie wykonane pomyślnie, wyświetlony zostanie następujący komunikat:

Wyjście:

wyjście createIndex

  1. Wartość numIndexesBefore: 1 wskazuje liczbę wartości pól w indeksach przed uruchomieniem polecenia. Każda kolekcja ma pole _id, które również jest traktowane jako wartość pola, więc numIndexesBefore wynosi 1.
  2. numIndexesAfter: 2 wskazuje liczbę wartości pól w indeksach po uruchomieniu polecenia.
  3. Wynik „ok: 1” oznacza, że ​​operacja zakończyła się powodzeniem i nowy indeks został dodany do kolekcji.

Powyższy kod pokazuje, jak utworzyć indeks na podstawie wartości jednego pola, ale można również utworzyć indeks na podstawie wielu wartości pól. Poniższy przykład pokazuje, jak to zrobić:

Utwórz indeks złożony w wielu polach

db.Employee.createIndex({Employeeid:1, EmployeeName:1})

Metoda createIndex uwzględnia teraz wiele wartości pól, co spowoduje utworzenie indeksu na podstawie wartości „Employeeid” i „EmployeeName”. Wartości Employeeid:1 i EmployeeName:1 wskazują, że indeks powinien zostać utworzony na podstawie tych dwóch wartości pól, a :1 oznacza kolejność rosnącą. Jest to tzw. indeks złożony.

Jak znaleźć indeksy: getIndexes()

Znalezienie indeksu w MongoDB odbywa się za pomocą pobierzIndeksy metoda. Poniższy przykład pokazuje, jak to zrobić:

Znajdź indeksy za pomocą getIndexes

db.Employee.getIndexes()

Metoda getIndexes służy do wyszukiwania wszystkich indeksów w kolekcji.

Jeśli polecenie zostanie wykonane pomyślnie, wyświetlony zostanie następujący komunikat:

Wyjście:

wyjście getIndexes

Wynik zwraca dokument, który pokazuje, że w kolekcji znajdują się dwa indeksy: pole _id i pole Employeeid. Wartość :1 oznacza, że ​​wartości pól w indeksie są tworzone w kolejności rosnącej.

Jak usuwać indeksy: dropIndex()

Usuwanie indeksu w MongoDB odbywa się za pomocą dropIndex metoda. Poniższy przykład pokazuje, jak to zrobić:

Usuń indeksy za pomocą dropIndex

db.Employee.dropIndex({Employeeid:1})

Metoda dropIndex przyjmuje wymagane wartości pól, które należy usunąć z indeksu.

Jeśli polecenie zostanie wykonane pomyślnie, wyświetlony zostanie następujący komunikat:

Wyjście:

wyjście dropIndex

  1. Wartość nIndexesWas: 3 wskazuje liczbę wartości pól w indeksach przed uruchomieniem polecenia. Każda kolekcja ma pole _id, które również jest traktowane jako wartość pola.
  2. Wynik ok: 1 oznacza, że ​​operacja zakończyła się powodzeniem, a pole „Employeeid” zostaje usunięte z indeksu.

Aby usunąć wszystkie indeksy z kolekcji naraz, można użyć polecenia dropIndexes. Poniższy przykład pokazuje, jak to zrobić:

Usuń wszystkie indeksy za pomocą dropIndexes

db.Employee.dropIndexes()

Metoda dropIndexes usunie wszystkie indeksy z wyjątkiem indeksu _id.

Jeśli polecenie zostanie wykonane pomyślnie, wyświetlony zostanie następujący komunikat:

Wyjście:

wyjście dropIndexes

  1. nIndexesWas: 2 wskazuje liczbę wartości pól w indeksach przed uruchomieniem polecenia.
  2. Każda kolekcja ma pole _id, które również jest traktowane jako wartość pola i nie zostanie usunięte przez MongoDB; to właśnie wskazuje ta wiadomość.
  3. Wyjście ok: 1 oznacza, że ​​operacja zakończyła się powodzeniem.

FAQ

Indeks jednopolowy sortuje jedno pole i odpowiada zapytaniom filtrującym tylko to pole. Indeks złożony obejmuje kilka pól w jednej strukturze i odpowiada zapytaniom filtrującym lub sortującym te pola łącznie. Indeksy złożone obsługują do 32 pól.

Pole _id to MongoDBKlucz podstawowy 's, więc każda kolekcja automatycznie otrzymuje unikalny indeks _id. Nie można go usunąć. Dlatego numIndexesBefore zaczyna się od 1, nawet zanim dodasz jakikolwiek niestandardowy indeks.

Uruchom zapytanie za pomocą .explain(“executionStats”). W zwycięskim planie etap IXSCAN oznacza użycie indeksu, natomiast etap COLLSCAN oznacza MongoDB przeskanuj każdy dokument, a nowy indeks może okazać się pomocny.

Użyj etapu agregacji $indexStats, aby sprawdzić, jak często uzyskiwany jest dostęp do każdego indeksu. Indeksy o bardzo niskim wykorzystaniu marnują miejsce na dysku i powolne zapisy, dlatego usuń je za pomocą dropIndex, aby utrzymać kolekcję w czystości.

Narzędzia AI analizują dzienniki powolnych zapytań i sugerują, które pola należy indeksować. MongoDBDoradca ds. wydajności ocenia rekomendacje indeksowe według wpływu, helping dodajesz indeksy o wysokiej wartości i pomijasz te zbędne.

Tak. Asystenci AI Copilot przekształcają zapytania w zwykłym języku angielskim na poprawną składnię polecenia createIndex, uwzględniając rosnącą lub malejącą kolejność kluczy oraz złożoną kolejność pól, a następnie objaśniają otrzymany indeks.

ESR to skrót od „Równość, Sortowanie, Zakres”. Podczas tworzenia indeksu złożonego najpierw należy umieścić pola zgodne z równością, następnie pola sortowania, a na końcu filtry zakresów. To uporządkowanie pozwala MongoDB jak najefektywniej wykorzystać indeks.

Na zapytanie objęte zakresem odpowiedzi udziela się w całości z indeksu, bez czytania dokumentów. Gdy każde pole w filtrze i projekcji znajduje się w jednym indeksie, MongoDB zwraca wyniki szybciej.

Podsumuj ten post następująco: