Oczywiście utrzymanie kilku różnych wskaźników ma negatywny wpływ na wydajność wstawiania i usuwania. Co z wydajnością zapytań: czy w ogóle ma sens utrzymywanie zbyt wielu indeksów na stole? Czy wydajność zapytania poprawi się w każdym przypadku z dodanym indeksem (oczywiście w przypadku zapytań w ogóle korzystających z tego indeksu), czy też jest nawet możliwe, że wydajność zapytania obniży się przy zbyt dużej liczbie indeksów, ponieważ konieczne jest sprawdzenie wszystkich indeksów, aby uzyskać wynik?
W przypadku, gdy na stole są różne wskaźniki: czy wszystkie zostaną wzięte pod uwagę, czy tylko najlepsze z punktu widzenia optymalizatora? Czy Oracle implementuje wskaźniki wielowymiarowe?
oracle
performance
index
pawelokowy
źródło
źródło
Odpowiedzi:
Wygenerowanie planu potrwa nieznacznie dłużej, gdy będzie więcej do rozważenia indeksów, ale wątpię, by różnica była wymierna. Te powody spadku indeksu nie wymienia wydajność kwerendy. Z drugiej strony, ogólnie rzecz biorąc, nie powinieneś tworzyć indeksów, chyba że wiesz, że zostaną one wykorzystane do zwiększenia wydajności zapytania.
W Przewodniku pojęciach Oracle podano kryteria tworzenia indeksu.
Wszystkie indeksy będą brane pod uwagę w tym sensie, że wszystkie indeksy w tabelach w zapytaniu są sprawdzane w celu ustalenia, czy można ich użyć. Te, które mogą być dalej badane w celu ustalenia przydatności.
źródło
Dopóki twoje statystyki są aktualne, optymalizator oparty na kosztach powinien podejmować rozsądne decyzje, które indeksy zastosować. Jeśli nie, to czas na skorzystanie ze wskazówek . Nigdy nie przejrzy indeksu w kolumnie, który nie jest konieczny do spełnienia zapytania.
źródło
Znalazłem to w wyborze strategii Index of the application guide programisty . Ta strona dotyczy „wyboru strategii indeksu”:
źródło