Зависи...
Малко вероятно е индекс само върху column1
ще бъде от полза, ако вече имате съставен индекс на column1, column2
. От column1
е водещият индекс, заявки към таблицата, които имат само column1
като предикат ще може да използва съставния индекс. Ако често изпълнявате заявки, които трябва да направят пълно сканиране на индекса и наличието на column2
значително увеличава размера на индекса, възможно е индекс само върху column1
би било по-ефективно, тъй като пълното сканиране на индекса ще трябва да прави по-малко I/O. Но това е доста необичайна ситуация.
Индекс само върху column2
може да е от полза, ако някои от вашите заявки към таблицата указват предикати само на column2
. Ако има сравнително малко различни стойности на column1
, възможно е Oracle да направи сканиране за прескачане на индекс, използвайки съставния индекс, за да удовлетвори заявки, които указват само column2
като предикат. Но сканирането с прескачане вероятно ще бъде много по-малко ефективно от сканирането на диапазон, така че е разумно вероятно индексът да е само на column2
биха били от полза за тези запитвания. Ако има голям брой отделни стойности за column1
, сканирането с пропускане би било още по-малко ефективно и индекс само върху column2
би било по-полезно. Разбира се, ако никога не правите заявки към таблицата, като използвате column2
без също да указвате предикат на column1
, няма да имате нужда от индекс само върху column2
.