Pengoptimal berpikir bahwa pemindaian tabel lengkap akan lebih baik.
Jika hanya ada beberapa NULL baris, pengoptimalnya benar.
Jika Anda benar-benar yakin bahwa akses indeks akan lebih cepat (yaitu, Anda memiliki lebih dari 75% baris dengan col1 IS NULL ), lalu beri petunjuk kueri Anda:
SELECT /*+ INDEX (t index_name_on_col1) */
*
FROM mytable t
WHERE col1 IS NOT NULL
Mengapa 75% ?
Karena menggunakan INDEX SCAN untuk mengambil nilai yang tidak tercakup oleh indeks menyiratkan gabungan tersembunyi di ROWID , yang harganya sekitar 4 kali lebih banyak daripada pemindaian tabel.
Jika rentang indeks mencakup lebih dari 25% baris, pemindaian tabel biasanya lebih cepat.
Seperti yang disebutkan oleh Tony Andrews , faktor pengelompokan adalah metode yang lebih akurat untuk mengukur nilai ini, tetapi 25% masih merupakan aturan praktis yang baik.