Jeśli zapytanie incldues więcej niż pewien procent wierszy w tabeli, optymalizator wybiera zrobić skan zamiast szukać, ponieważ przewiduje, że będzie w takim przypadku wymaga mniejszej liczby operacji wejścia (dla poszukiwacza, potrzebuje jednego IO dysku na każdy poziom w indeksie dla każdego zwracanego przez siebie wiersza), podczas gdy w przypadku skanowania istnieje tylko jedno miejsce docelowe dysku na wiersz w całej tabeli.
Więc jeśli istnieje 5 poziomów w indeksie b-drzewa, to jeśli zapytanie wygeneruje więcej niż 20% wierszy w tabeli, taniej jest odczytać całą tabelę niż zrobić 5 OI dla każdego wierszy 20% ...
Czy można nieco zawęzić dane wyjściowe zapytania, aby zmniejszyć liczbę wierszy zwracanych przez ten krok w procesie? Pomogłoby to wybrać szukanie przez skan.
Co powiesz na zapytanie i schemat tabeli? –