UPPDATERING: Försök göra kolumnen kolumn NOT NULL. Det är anledningen till att den inte använder indexet. När den inte är null, här är planen.
SELECT STATEMENT, GOAL = ALL_ROWS 69 10 30
HASH GROUP BY 69 10 30
INDEX FAST FULL SCAN SANDBOX TEST_INDEX 56 98072 294216
Om optimeraren bestämmer att det är mer effektivt att INTE använda indexet (kanske på grund av att frågan har skrivits om), så gör den inte det. Optimeringstips är just det, nämligen tips för att berätta för Oracle ett index du gilla det att använda. Du kan se dem som förslag. Men om optimeraren avgör att det är bättre att inte använda indexet (igen, till exempel som ett resultat av omskrivning av en fråga), så kommer den inte att göra det.
Se denna länk:http://download. oracle.com/docs/cd/B19306_01/server.102/b14211/hintsref.htm "Att specificera en av dessa tips gör att optimeraren väljer den angivna åtkomstvägen endast om åtkomstvägen är tillgänglig baserat på förekomsten av ett index eller kluster och på de syntaktiska konstruktionerna av SQL-satsen. Om en ledtråd anger en otillgänglig åtkomstväg, då ignorerar optimeraren det."
Eftersom du kör en count(*)-operation har optimeraren bestämt att det är mer effektivt att bara skanna hela tabellen och hash istället för att använda ditt index.
Här är en annan praktisk länk för tips:http://www.dba-oracle.com/t_hint_ignored. htm