OPDATERING: Prøv at gøre kolonnekolonnen IKKE NULL. Det er grunden til, at det ikke bruger indekset. Når den ikke er nul, er planen her.
SELECT STATEMENT, GOAL = ALL_ROWS 69 10 30
HASH GROUP BY 69 10 30
INDEX FAST FULL SCAN SANDBOX TEST_INDEX 56 98072 294216
Hvis optimeringsværktøjet bestemmer, at det er mere effektivt IKKE at bruge indekset (måske på grund af omskrivning af forespørgslen), så gør det det ikke. Optimeringstip er netop det, nemlig tip til at fortælle Oracle et indeks, du vil like det at bruge. Du kan tænke på dem som forslag. Men hvis optimeringsværktøjet bestemmer, at det er bedre ikke at bruge indekset (igen, f.eks. som følge af forespørgselsomskrivning), så gør den det ikke.
Se dette link:http://download. oracle.com/docs/cd/B19306_01/server.102/b14211/hintsref.htm "Angivelse af et af disse tip får optimeringsværktøjet til kun at vælge den angivne adgangssti, hvis adgangsstien er tilgængelig baseret på eksistensen af et indeks eller en klynge og på de syntaktiske konstruktioner af SQL-sætningen. Hvis et tip angiver en utilgængelig adgangssti, så ignorerer optimeringsværktøjet det."
Da du kører en count(*)-operation, har optimeringsværktøjet fastslået, at det er mere effektivt bare at scanne hele tabellen og hash i stedet for at bruge dit indeks.
Her er et andet praktisk link til tip:http://www.dba-oracle.com/t_hint_ignored. htm