Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Mengapa indeks tidak digunakan untuk kueri ini?

PERBARUI: Coba buat kolom col NOT NULL. Itulah alasannya tidak menggunakan index. Jika bukan null, inilah rencananya.

SELECT STATEMENT, GOAL = ALL_ROWS           69  10  30
                    HASH GROUP BY           69  10  30
 INDEX FAST FULL SCAN   SANDBOX TEST_INDEX  56  98072   294216

Jika pengoptimal menentukan bahwa lebih efisien untuk TIDAK menggunakan indeks (mungkin karena menulis ulang kueri), maka itu tidak akan terjadi. Petunjuk pengoptimal hanya itu, yaitu, petunjuk untuk memberi tahu Oracle indeks yang Anda suka itu untuk digunakan. Anda dapat menganggapnya sebagai saran. Tetapi jika pengoptimal menentukan bahwa lebih baik tidak menggunakan indeks (sekali lagi, sebagai hasil dari penulisan ulang kueri misalnya), maka itu tidak akan terjadi.

Lihat tautan ini:http://download. oracle.com/docs/cd/B19306_01/server.102/b14211/hintsref.htm "Menentukan salah satu petunjuk ini menyebabkan pengoptimal memilih jalur akses yang ditentukan hanya jika jalur akses tersedia berdasarkan keberadaan indeks atau cluster dan pada konstruksi sintaksis dari pernyataan SQL. Jika petunjuk menentukan jalur akses yang tidak tersedia, maka pengoptimal mengabaikannya."

Karena Anda menjalankan operasi count(*), pengoptimal telah menentukan bahwa lebih efisien untuk hanya memindai seluruh tabel dan hash daripada menggunakan indeks Anda.

Berikut tautan berguna lainnya tentang petunjuk:http://www.dba-Oracle.com/t_hint_ignored. htm



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana mengkonversi CLOB ke BLOB di Oracle?

  2. Cara melihat pernyataan Oracle SQL aktual yang sedang dieksekusi

  3. Oracle membaca nama kolom dari pernyataan pilih

  4. Menggunakan PL/SQL bagaimana Anda memasukkan konten file ke gumpalan?

  5. Hasil fungsi Oracle Decode dengan format berbeda