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.