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

Penyetelan Kinerja PL/SQL untuk Kueri Wildcard LIKE '%...%'

Seperti yang telah disebutkan, Anda dapat menambahkan indeks konteks ctx ke kolom nama.

dengan asumsi sejumlah kecil catatan diperbarui, 1 opsi adalah menyegarkan indeks Anda setiap hari. (dan catat kapan itu terjadi)

lalu tambahkan kolom &indeks tanggal pembaruan terakhir ke tabel Anda yang sedang dicari.

Seharusnya dimungkinkan untuk memindai indeks ctx Anda untuk sebagian besar data lama yang tidak berubah dan memilih dari persentase kecil data yang diperbarui menggunakan LIKE tradisionale.g:

WHERE (lastupdated<lastrefresh AND contains(name,'%ABC%')) 
   OR (lastupdated>lastrefresh AND name like '%ABC%')

CATATAN:Anda mungkin menemukan rencana kueri Anda menjadi sedikit mental (banyak konversi bitmap ke id baris) dalam hal ini membagi 2 bagian OR menjadi kueri UNION ALL.e.g

SELECT id FROM mytable   
    WHERE 
    (lastupdate>lastrefresh and name LIKE '%ABC%')
    UNION ALL
    SELECT id FROM mytable   
    WHERE lastupdate<lastrefresh and CONTAINS(name, '%ABC%', 1) > 0


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Melarikan diri dari karakter kontrol di Oracle XDB

  2. Menghapus baris dari tabel induk dan anak

  3. Apa topeng pemformatan tanggal Oracle untuk zona waktu?

  4. SQL Server setara dengan fungsi WM_CONCAT

  5. Bagaimana cara memanggil prosedur tersimpan Oracle dari skrip Excel VBA?