Oracle Unique Index

Oracle Unique Index



Databasprestanda är en av de viktigaste rollerna för en databasutvecklare. Att se till att din databas körs med optimal prestanda kan avsevärt påverka applikationerna som läser eller skriver till databasen.

Även om det finns många sätt att förbättra databasens prestanda, är en funktion nästan universell för alla databaser. Databasindex är datastrukturer eller objekt som används för att öka hastigheten på datahämtningen från tabellen.

När de används på rätt sätt kan databasindex minska hastigheten på en fråga med nästan hälften, beroende på måldata, layout, tillgängliga resurser etc.







I den här handledningen kommer du att lära dig hur du arbetar med unika index i Oracle-databaser för att förhindra tillgängligheten av dubbletter av värden i en indexerad kolumn.



Oracle Unique Index

Vi kan använda ett unikt index för att säkerställa att inga dubbletter av rader lagras i en given kolumn. Om kolumnen i ett visst index innehåller en unik regel, kommer ett försök att lägga till två rader med ett liknande värde i den kolumnen att resultera i ett fel som indikerar ett unikt regelbrott.



I Oracle kan vi skapa ett unikt index med hjälp av CREATE UNIQUE INDEX-satsen som visas i följande:





SKAPA UNIKT INDEX indexnamn PÅ tabellnamn ( kolumner ) ;

Kolumnerna som ingår i indexet kommer inte att acceptera några dubbletter av rader.

Exempel på unik tabellillustration

För att visa hur man skapar och använder ett unikt index, ta följande tabell:



VÄLJ * FROM sample_data;

Produktion :

Skapa ett unikt index i kolumnen Förnamn

Följande exempelsats visar hur man skapar ett unikt index med hjälp av kolumnen förnamn:

skapa unikt index first_name_unique på sample_data ( förnamn ) ;

Genom att aktivera detta index kan vi inte infoga mer än en rad med samma förnamn.

Ta till exempel följande infogningssats:

infoga i sample_data ( id , first_name, ip_address, btc_address, credit_card, identifier )
värden ( elva , 'Wallas' , '169.158.70.77' , '1CNz5d1d5SC8SaR6dFSVihwztqYx5Fg77q' , '4017955174552' ,
'26811d77-0a3a-4397-bc33-f7835f7c7ab9' ) ;

Om vi ​​kör den givna insert-satsen bör vi få ett felmeddelande som visas i följande:

[ 23 000 ] [ 1 ] ORA-00001: unik begränsning ( HR.FIRST_NAME_UNIQUE ) kränkts

Som vi kan se bryter insättningen av det givna värdet mot den unika begränsningen för kolumnen förnamn.

Skapa ett unikt index med två kolumner

Vi kan också ha ett unikt index som består av mer än en kolumn. I följande exempel skapar vi ett unikt index med hjälp av kolumnerna first_name och io_address:

skapa unika index verify_columns på sample_data ( förnamn, ip_adress ) ;

På liknande sätt kommer att lägga till dubbletter av värden för antingen kolumnen förnamn eller ip_adress resultera i unika indexöverträdelsefel.

Automatiska unika index

Har du någonsin undrat vad som händer när du deklarerar en tabellkolumn med en primärnyckel eller unik begränsning?

Enkelt uttryckt, om du anger en kolumn som tabellens primärnyckel eller tilldelar en unik begränsning till en viss kolumn, skapar databasmotorn automatiskt ett unikt index för den kolumnen.

Detta säkerställer att inget dubblettvärde infogas i den kolumnen.

Ta till exempel följande påstående:

skapa tabell sample_data
(
id siffra,
förnamn  varchar2 ( femtio ) ,
ip_adress  varchar2 ( tjugo ) ,
btc_address varchar2 ( femtio ) ,
kreditkort varchar2 ( femtio ) ,
identifierare  varchar2 ( 40 ) ,
constraint sample_pk primärnyckel ( id )
) ;

I föregående exempel skapar vi en tabell och ställer in id-kolumnen som tabellens primärnyckel. Sedan, för att se den unika begränsningen som är associerad med den kolumnen (genereras automatiskt), kan vi köra följande kommando:

Välj index_name, index_type, synlighet, status, TABLE_NAME
från alla_index där TABLE_NAME = 'STICKPROV' ;

Resultat :
I det här fallet kan vi se det unika indexet som skapas av databasmotorn för id-kolumnen.

Slutsats

I den här guiden lärde du dig hur du skapar och använder de unika indexen i Oracle-databasen. Du lärde dig också vad som händer när du tilldelar en primärnyckel eller unik begränsning till en tabellkolumn.