sql >> Database >  >> RDS >> Oracle

Oracle:enkele index met meerdere kolommen of twee indexen met één kolom

Het hangt ervan af...

Het is vrij onwaarschijnlijk dat een index op slechts column1 is handig als u al een samengestelde index heeft op column1, column2 . Sinds column1 is de leidende index, zoekopdrachten tegen de tabel die alleen column1 . hebben als predikaat zal de samengestelde index kunnen gebruiken. Als u regelmatig zoekopdrachten uitvoert die een volledige scan van de index moeten uitvoeren en de aanwezigheid van column2 de index aanzienlijk vergroot, is het mogelijk dat een index op slechts column1 zou efficiënter zijn omdat de volledige indexscan minder I/O zou moeten doen. Maar dat is een vrij ongebruikelijke situatie.

Een index op slechts column2 kan nuttig zijn als sommige van uw zoekopdrachten in de tabel predikaten specificeren op slechts column2 . Als er relatief weinig verschillende waarden zijn van column1 , is het mogelijk dat Oracle een scan voor het overslaan van de index zou kunnen uitvoeren met behulp van de samengestelde index om te voldoen aan zoekopdrachten die alleen column2 specificeren als predikaat. Maar een scan overslaan is waarschijnlijk veel minder efficiënt dan een bereikscan, dus het is redelijk waarschijnlijk dat een index op slechts column2 zou die vragen ten goede komen. Als er een groot aantal verschillende waarden is voor column1 , zou de scan overslaan nog minder efficiënt zijn en een index op slechts column2 voordeliger zou zijn. Natuurlijk, als u de tabel nooit opvraagt ​​met column2 zonder ook een predikaat op te geven op column1 , je hebt geen index nodig op slechts column2 .



  1. Hoe voer je een Java-programma op een server uit?

  2. Een aangepaste query maken met Spring DATA JPA?

  3. Hoe krijg ik resultaten van de zoekopdracht als de geselecteerde datum tussen twee datums ligt?

  4. Controleer of een object een primaire sleutel is met OBJECTPROPERTY() in SQL Server