To zależy...
Jest mało prawdopodobne, że indeks tylko w column1
będzie korzystne, jeśli masz już złożony indeks na column1, column2
. Od column1
jest indeksem wiodącym, zapytania do tabeli, które mają tylko column1
jako predykat będzie mógł używać indeksu złożonego. Jeśli często uruchamiasz zapytania, które wymagają pełnego skanowania indeksu i obecności column2
znacznie zwiększa rozmiar indeksu, możliwe, że indeks tylko na column1
byłby bardziej wydajny, ponieważ pełne skanowanie indeksu wymagałoby mniejszej liczby operacji we/wy. Ale to dość nietypowa sytuacja.
Indeks tylko w column2
może być korzystne, jeśli niektóre z twoich zapytań względem tabeli określają predykaty tylko na column2
. Jeśli istnieje stosunkowo niewiele odrębnych wartości column1
, możliwe jest, że Oracle może wykonać skanowanie z pomijaniem indeksu przy użyciu indeksu złożonego, aby spełnić zapytania, które określają tylko column2
jako predykat. Ale skanowanie z pomijaniem jest prawdopodobnie znacznie mniej wydajne niż skanowanie zakresu, więc jest całkiem prawdopodobne, że indeks tylko w column2
skorzystałyby na tych zapytaniach. Jeśli istnieje duża liczba odrębnych wartości dla column1
, skanowanie z pominięciem byłoby jeszcze mniej wydajne, a indeks tylko w column2
byłoby bardziej korzystne. Oczywiście, jeśli nigdy nie wyślesz zapytania do tabeli za pomocą column2
bez określenia predykatu w column1
, nie potrzebujesz indeksu tylko w column2
.