sql >> Databasteknik >  >> RDS >> Oracle

Oracle:Index med flera kolumner eller två enstaka kolumner

Det beror på...

Det är ganska osannolikt att ett index på bara column1 kommer att vara fördelaktigt om du redan har ett sammansatt index på column1, column2 . Sedan column1 är det ledande indexet, frågor mot tabellen som bara har column1 som ett predikat kommer att kunna använda det sammansatta indexet. Om du ofta kör frågor som behöver göra en fullständig genomsökning av indexet och förekomsten av column2 avsevärt ökar storleken på indexet, är det möjligt att ett index på bara column1 skulle vara effektivare eftersom fullindexskanningen skulle behöva göra mindre I/O. Men det är en ganska ovanlig situation.

Ett index på bara column2 kan vara fördelaktigt om några av dina frågor mot tabellen anger predikat på bara column2 . Om det finns relativt få distinkta värden för column1 , är det möjligt att Oracle kunde göra en indexöverhoppningsskanning med det sammansatta indexet för att tillfredsställa frågor som endast anger column2 som ett predikat. Men en hoppa över sökning är sannolikt mycket mindre effektiv än en intervallsökning, så det är rimligt troligt att ett index på bara column2 skulle gynna dessa frågor. Om det finns ett stort antal distinkta värden för column1 , skulle hoppa över skanningen vara ännu mindre effektiv och ett index på bara column2 skulle vara mer fördelaktigt. Naturligtvis, om du aldrig frågar tabellen med column2 utan att även ange ett predikat på column1 , du skulle inte behöva ett index på bara column2 .



  1. Hur får man en lista över tillgängliga SQL-servrar med C#-kod?

  2. Välj distinkta första ord i ett fält

  3. MySql :Initiera mySql-variabeln i en fråga

  4. Strängsammansättning i MySQL