Oracle Unique -indeksi

Oracle Unique Indeksi



Tietokannan suorituskyky on yksi tietokannan kehittäjän olennaisista rooleista. Tietokannan optimaalisen suorituskyvyn varmistaminen voi vaikuttaa merkittävästi sovelluksiin, jotka lukevat tai kirjoittavat tietokantaan.

Vaikka on olemassa lukuisia tapoja parantaa tietokannan suorituskykyä, yksi ominaisuus on melkein yleinen kaikissa tietokannassa. Tietokantaindeksit ovat tietorakenteita tai objekteja, joita käytetään nopeuttamaan tietojen hakemista taulukosta.

Oikein käytettynä tietokantaindeksit voivat vähentää kyselyn nopeutta lähes puoleen riippuen kohdetiedoista, asettelusta, käytettävissä olevista resursseista jne.







Tässä opetusohjelmassa opit työskentelemään yksilöllisten indeksien kanssa Oraclen tietokannassa, jotta estetään päällekkäisten arvojen saatavuus indeksoidussa sarakkeessa.



Oracle Unique -indeksi

Voimme käyttää ainutlaatuista indeksiä varmistaaksemme, ettei tiettyyn sarakkeeseen tallenneta päällekkäisiä rivejä. Jos tietyn indeksin sarake sisältää ainutlaatuisen säännön, kahden samanlaisen arvon sisältävän rivin lisääminen kyseiseen sarakkeeseen johtaa virheeseen, joka ilmaisee ainutlaatuisen rajoitteen rikkomisen.



Oraclessa voimme luoda ainutlaatuisen indeksin käyttämällä CREATE UNIQUE INDEX -käskyä seuraavassa esitetyllä tavalla:





LUO YKSILÖLLINEN INDEKSI hakemiston_nimi taulukon_nimi ( sarakkeita ) ;

Hakemistoon sisältyvät sarakkeet eivät hyväksy päällekkäisiä rivejä.

Esimerkki ainutlaatuisesta taulukkokuvasta

Seuraavasta taulukosta näet, miten yksilöllinen hakemisto luodaan ja käytetään:



VALITSE * FROM sample_data;

Lähtö :

Luo yksilöllinen indeksi First_Name-sarakkeeseen

Seuraava esimerkkilause näyttää, kuinka luodaan yksilöllinen indeksi käyttämällä saraketta first_name:

luo yksilöllinen indeksi etunimi_ainutlaatuinen näytetietoihin ( etunimi ) ;

Ottamalla tämän indeksin käyttöön emme voi lisätä kuin yhden rivin samalla etunimellä.

Otetaan esimerkiksi seuraava insert-lause:

lisää kohtaan sample_data ( id , etunimi, ip_osoite, btc_osoite, luottokortti, tunniste )
arvot ( yksitoista , 'Wallas' , '169.158.70.77' , '1CNz5d1d5SC8SaR6dFSVihwztqYx5Fg77q' , '4017955174552' ,
'26811d77-0a3a-4397-bc33-f7835f7c7ab9' ) ;

Jos suoritamme annetun insert-käskyn, meidän pitäisi saada seuraavanlainen virhe:

[ 23 000 ] [ 1 ] ORA-00001: ainutlaatuinen rajoitus ( HR.FIRST_NAME_UNIQUE ) rikottu

Kuten näemme, annetun arvon lisääminen rikkoo sarakkeen first_name yksilöllistä rajoitusta.

Luo ainutlaatuinen indeksi kahdella sarakkeella

Meillä voi myös olla ainutlaatuinen indeksi, joka koostuu useammasta kuin yhdestä sarakkeesta. Seuraavassa esimerkissä luomme yksilöllisen indeksin käyttämällä sarakkeita first_name ja io_address:

luo yksilöllinen indeksi verify_columns kohtaan sample_data ( etunimi, ip_osoite ) ;

Samoin päällekkäisten arvojen lisääminen joko first_name- tai ip_address-sarakkeeseen johtaa ainutlaatuisiin indeksirikkomusvirheisiin.

Automaattiset yksilölliset indeksit

Oletko koskaan miettinyt, mitä tapahtuu, kun ilmoitat taulukon sarakkeen ensisijaisella avaimella tai ainutlaatuisella rajoituksella?

Yksinkertaisesti sanottuna, jos asetat sarakkeen taulukon ensisijaiseksi avaimeksi tai määrität tietylle sarakkeelle yksilöllisen rajoitteen, tietokantakone luo automaattisesti yksilöllisen indeksin kyseiselle sarakkeelle.

Tämä varmistaa, että sarakkeeseen ei lisätä päällekkäistä arvoa.

Otetaan esimerkiksi seuraava lausunto:

luo taulukko sample_data
(
id määrä,
etunimi  varchar2 ( viisikymmentä ) ,
ip_osoite  varchar2 ( kaksikymmentä ) ,
btc_osoite varchar2 ( viisikymmentä ) ,
luottokortti varchar2 ( viisikymmentä ) ,
tunniste  varchar2 ( 40 ) ,
rajoite sample_pk ensisijainen avain ( id )
) ;

Edellisessä esimerkissä luomme taulukon ja asetamme id-sarakkeen taulukon ensisijaiseksi avaimeksi. Tämän jälkeen voimme suorittaa seuraavan komennon, jotta voimme tarkastella sarakkeeseen liittyvää ainutlaatuista rajoitusta (generoitu automaattisesti):

valitse indeksin_nimi, indeksin_tyyppi, näkyvyys, tila, TABLE_NAME
kaikista_hakemistoista, joissa TABLE_NAME = 'SAMPLE_DATA' ;

Tulokset :
Tässä tapauksessa voimme nähdä yksilöllisen indeksin, jonka tietokantamoottori on luonut id-sarakkeelle.

Johtopäätös

Tässä oppaassa opit luomaan ja käyttämään ainutlaatuisia indeksejä Oracle-tietokannassa. Opit myös, mitä tapahtuu, kun määrität ensisijaisen avaimen tai yksilöllisen rajoitteen taulukon sarakkeeseen.