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.