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

Oracle 10g - optimalkan DI MANA BUKAN NULL

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengantar Pernyataan FORALL Dalam Database Oracle

  2. 2 Cara Mendapatkan Hari dari Kencan di Oracle

  3. ORA-12519 TNS:tidak ditemukan penangan layanan yang sesuai

  4. Oracle - Tabel klon - Struktur, batasan data, dan semuanya

  5. oracle - pernyataan apa yang perlu dilakukan?