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

Bergabung terlalu lama

Melihat semua bidang yang terlibat, indeks penutup pada setiap tabel akan melibatkan kolom Mei

t1: Y, F, H, A
t2: X, G, C, D, E

Seberapa selektif SALAH SATU dari kriteria:t2.X, t2.G atau t1.Y, t1.F, t1.H ?

Jika tidak ada kolom individual yang cukup selektif (idealnya 0,5% atau kurang), Anda mungkin ingin membuat satu atau beberapa indeks penutup yang melibatkan banyak kolom, misalnya

t2 (G, X)
t1 (H, F, Y)

Catatan: Urutan kolom dalam indeks sangat penting - selalu letakkan yang paling selektif (yang membagi data kolom menjadi kumpulan yang paling berbeda) terlebih dahulu.

Dengan mengorbankan penyimpanan, Anda dapat membuat indeks MENUTUP kueri dengan menyediakan semua kolom yang diperlukan dalam indeks itu sendiri. Ini berarti kueri tidak perlu kembali ke data tabel sama sekali.

create index ix_t2 on t2 (G,X) INCLUDE (C,D,E)
create index ix_t1 on t1 (H,F,Y) INCLUDE (A)

EDIT

Sepertinya saya menyelipkan SQL Server DDL di sana. Di Oracle, Anda harus memperluas indeks menjadi t2 (G,X, C,D,E) - tetapi hal itu meningkatkan persyaratan selektivitas untuk penggunaan indeks karena kunci indeks menjadi sangat panjang.




  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 cara menghapus nilai kolom berulang dari laporan?

  2. Oracle - ORA-06502:PL/SQL:kesalahan numerik atau nilai (DBMS_OUTPUT)

  3. Mengapa Konversi tidak valid meminta KODE KESALAHAN:17132?

  4. Mencocokkan nilai kolom duplikat Oracle menggunakan Soundex, Jaro Winkler dan Edit Distance (UTL_MATCH)

  5. Mengapa OCI8/Oracle PHP oci_bind_array_by_name tidak berfungsi untuk saya?