CẬP NHẬT: Hãy thử làm cho cột col KHÔNG ĐẦY ĐỦ. Đó là lý do nó không sử dụng chỉ mục. Khi nó không rỗng, đây là kế hoạch.
SELECT STATEMENT, GOAL = ALL_ROWS 69 10 30
HASH GROUP BY 69 10 30
INDEX FAST FULL SCAN SANDBOX TEST_INDEX 56 98072 294216
Nếu trình tối ưu hóa xác định rằng KHÔNG sử dụng chỉ mục hiệu quả hơn (có thể do viết lại truy vấn), thì nó sẽ không. Các gợi ý của trình tối ưu hóa chỉ là vậy, cụ thể là các gợi ý để cho Oracle biết một chỉ mục mà bạn muốn nó để sử dụng. Bạn có thể coi chúng như những gợi ý. Nhưng nếu trình tối ưu hóa xác định rằng tốt hơn là không nên sử dụng chỉ mục (một lần nữa, do kết quả của việc viết lại truy vấn chẳng hạn), thì nó sẽ không.
Tham khảo liên kết này: http:// tải xuống. oracle.com/docs/cd/B19306_01/server.102/b14211/hintsref.htm "Việc chỉ định một trong những gợi ý này khiến trình tối ưu hóa chỉ chọn đường dẫn truy cập đã chỉ định nếu đường dẫn truy cập có sẵn dựa trên sự tồn tại của chỉ mục hoặc cụm và trên cấu trúc cú pháp của câu lệnh SQL. Nếu gợi ý chỉ định một đường dẫn truy cập không khả dụng, thì trình tối ưu hóa bỏ qua nó. "
Vì bạn đang chạy thao tác đếm (*), trình tối ưu hóa đã xác định rằng việc chỉ quét toàn bộ bảng và băm thay vì sử dụng chỉ mục của bạn sẽ hiệu quả hơn.
Đây là một liên kết hữu ích khác về gợi ý: http://www.dba-oracle.com/t_hint_ignored. htm