Ya, manfaatnya datang ketika Anda ingin menanyakan bagian indeks. Jika Anda menempatkan predikat bekas bagian terlebih dahulu indeks dapat digunakan untuk kueri yang melibatkan predikat tersebut tetapi tidak semua kolom dalam indeks.
Selain itu, kecuali jika Anda memiliki persyaratan lain, ini dapat membantu untuk menempatkan predikat paling selektif terlebih dahulu, karena ini dapat memangkas indeks mencari operasi lebih cepat.
Dalam kasus Anda IDX_2
belum tentu berlebihan tergantung pada sifat kueri di atas meja. Namun, mungkin tidak perlu menyertakan semua kolom. Jika, misalnya, Anda melakukan banyak pertanyaan pada saat itu location
dan date
kemudian IDX_2
mungkin berguna untuk membantu menyelesaikan pertanyaan tersebut karena IDX_1
tidak dalam urutan yang tepat untuk berguna untuk itu. Anda mungkin, bagaimanapun, menemukan bahwa item
itu berlebihan IDX_2
.
Dari 9i, Oracle memperkenalkan operator 'lewati pemindaian' di mana kolom indeks trailing dapat ditanyakan lebih efisien, yang dapat mengurangi kebutuhan akan indeks tambahan semacam ini.
Dalam kasus yang lebih spesifik, jika Anda melakukan kueri item
oleh location
dan date
dan tidak memerlukan kolom lain, maka kueri tersebut dapat sepenuhnya diselesaikan melalui indeks tanpa harus membaca apa pun dari tabel. Anda juga dapat membuat indeks penutup yang memiliki kolom non-indeks. Jika semua kolom yang diperlukan dapat diselesaikan dari indeks penutup kueri tidak perlu menyentuh tabel utama sama sekali.
Akhirnya, sebagai jawaban atas pertanyaan terakhir Anda: Jika Anda memiliki seperangkat pertanyaan yang sering digunakan dan menghabiskan banyak sumber daya dan dapat disesuaikan dengan menggunakan indeks, maka itu pasti layak dipertimbangkan. Namun, mempertahankan indeks disertai dengan overhead pada sisipan, jadi Anda harus memperdagangkan kinerja kueri terhadap overhead yang ditempatkan indeks pada insert atau memperbarui operasi.
Hal lain yang perlu dipertimbangkan adalah kolom dengan banyak nilai nol.
Jika kolom ini memiliki kolom yang ditentukan setelah mereka dalam indeks, nilai nol harus diindeks. Kalau tidak, seperti biasa, nilai nol tidak diindeks (tentu saja, ini dengan asumsi Anda menggunakan indeks b-tree).
Jadi, jika Anda memiliki kolom dengan sejumlah besar nilai nol, menempatkannya di akhir indeks dapat menghemat ruang disk yang signifikan.
sumber