SQLite Create Index

SQLite Create Index

En indeks er et spesifikt dataverktøy for organisering og optimalisering av informasjonen for en hel kolonne for spørring. Indekser (eller indekser) er unike for databasesøk ved at de lar visse rader i en post være lokalisert uten å måtte skanne hele tabellen. Som et resultat kan indekser gi noen operasjoner en betydelig resultatgevinst. Indekser er vanligvis koblet til en enkelt tabell, selv om de kan omfatte flere kolonner fra den tabellen.

Dermed har vi bestemt oss for å dekke temaet indekser som ble brukt i SQLite i denne artikkelen i dag. La oss komme i gang med SQLite -databasen på vår nettopp lanserte Terminal Shell. For dette, prøv ut en ord-kommandoen i spørringsområdet, jeg.e., “Sqlite3”. SQLite Shell -konsollen vil bli lansert, som vist nedenfor:

Etter å ha lansert SQLite -skallet, har vi brukt “.tabeller ”instruksjon på skallet for å vise alle de allerede laget tabellene i databasen vår.

Dermed trenger vi minst en tabell i databasen vår for å lage indekser på kolonnene. Så vi prøver å lage tabellinstruksjonen som vil lage en tabell som heter “Info”. Denne tabellen vil inneholde totalt tre kolonner i den. ID -kolonnen og alderskolonnen vil være av heltallstype, mens ID -kolonnen vil bli brukt som en primærnøkkel i denne tabellen. Navnkolonnen vil være av teksttype. Tabellen er opprettet med hell, og vi har prøvd Select Instruction for å hente alle postene. Dessverre er det ingen poster i tabellen så langt.

SQLite> Opprett tabellinfo (ID INT Primærnøkkel, navnetekst, alder Int);
sqlite> velg * fra info;
SQLite>.bord

La oss begynne å sette inn flere poster i tabellinformasjonen ved å bruke innsatsen i instruksjonen i SQLite -databasen. For dette må du spesifisere navnene på tabellkolonner som brukes til å sette inn poster, i.e., Id, navn og alder. Kolonnenavnene blir fulgt av nøkkelordet "verdier" ved å bruke verdiene i parentesene. Vi har lagt til fem poster i tabellen "Info".

sqlite> sett inn i info (id, navn, alder) verdier (1, "bella", 34);
sqlite> sett inn i info (id, navn, alder) verdier (2, "Bella", 23);
sqlite> sett inn i info (id, navn, alder) verdier (3, "George", 26);
sqlite> sett inn i info (id, navn, alder) verdier (4, "George", 29);
sqlite> sett inn i informasjon (id, navn, alder) verdier (5, "EMA", 30);

Etter det brukte vi Select -instruksjonen for å vise alle de nylig innsatte postene over tabellinfo. De fem postene for kolonner -ID, navn og alder på en tabell er vist på skallet.

sqlite> velg * fra info;

Som vi alle vet, er ID -kolonnen i "Info" -tabellen allerede spesifisert som en primærnøkkel. Dermed vil vi sjekke hvordan en primær nøkkelbegrensning vil reagere på duplikatverdiinnsetting. Så vi har brukt innsatsen i instruksjon for å sette inn nye poster i tabellen “Info”, mens verdien for kolonnen “ID” er 5, i.e., gjentatt. Utførelsen av denne uttalelsen fører til feilen “Unik begrensning mislyktes: Info.Id ”. Dette betyr at vi ikke kan legge til en duplikatverdi for kolonnen "ID".

sqlite> sett inn i info (id, navn, alder) verdier (5, "tom", 35);

Enkeltindeks

La oss opprette en enkelt indeks på en bestemt kolonne i en informasjonstabell. For dette må du bruke CREATE INDEX -instruksjonen etterfulgt av navnet på en indeks som skal opprettes, i.e., Age_index, nøkkelordet “ON”, navnet på en tabell, i.e., “Info” etterfulgt av kolonnenavnet, i.e., “Alder” som vi skal bruke indeksen. Etter å ha opprettet en indeks “AGE_INDEX” for kolonnen “Age”, har vi satt inn den nye posten i tabellinformasjonen ved hjelp av INSERT IN INSTRUKSJON. Vi har gjentatt verdien for kolonne “alder” i denne instruksjonen, jeg.e., 30. Når vi søker i alle postene til en tabell “Info”, har vi følgende poster:

SQLite> Opprett indeks AGE_INDEX på info (alder);
sqlite> sett inn i info (id, navn, alder) verdier (6, "EMA", 30);
sqlite> velg * fra info;

Det samme er gjort for kolonnen "Navn", jeg.e., opprettet en indeks “Name_index”. Deretter satte vi inn duplikatoppføringen for kolonnen "Navn" ved hjelp av instruksjonen og viste alle postene til tabellen "Info".

sqlite> Opprett indeksnavn_index på info (navn);
sqlite> sett inn i info (id, navn, alder) verdier (7, "EMA", 20);
sqlite> velg * fra info;

Du kan liste opp alle de nyopprettede indeksene i databasen din ved å bruke ".indekser ”instruksjon sammen med det spesielle navnet på en tabell,“ info ”, som inneholder eller bruker disse indeksene.

SQLite> .Indekser Info

Sammensatt indeks

Hvis du oppretter en indeks for mer enn en kolonne i en spesifikk tabell, sies det å være komposittindeksen. Så vi har opprettet en sammensatt indeks “Comp_index” for kolonner Navn og alder på en tabell “Info” ved hjelp av CREATE INDEX -instruksjonen som vises i bildet. Da vi prøvde å sette inn dupliserte poster i navnet og alderskolonnen i tabellen "Info" med innsatsen i instruksjon, returnerte den feilen "Unik begrensning mislyktes".

SQLite> Opprett indeks Comp_index på informasjon (navn, alder);
sqlite> sett inn i informasjon (id, navn, alder) verdier (7, "Bella", 23);

Vanligvis tilbyr indekser muligheten for å lage dupliserte oppføringer. Imidlertid forhindrer det unike søkeordet gjentatte verdier fra å bli satt inn eller oppdatert i en post med en ikke-unik oppføring. En unik indeks forbyr kanskje ikke en eller ekstra null siden null ikke blir sett på som en verdi. Ikke null skal spesifiseres i den første tabellerklæringen for å unngå null. La oss opprette en unik indeks på kolonnen "ID" for en tabellinfo med CREATE INDEX -instruksjonen. Vi har syv poster for tabellen "Info" i denne databasen. Så vi prøvde innsatsen i instruksjon for å legge til duplikatverdien for ID -kolonnen i en tabell. Den returnerte den samme "unike begrensningen".

SQLite> Opprett unik indeks uindex på info (ID);
sqlite> velg * fra info;
sqlite> sett inn i informasjon (id, navn, alder) verdier (7, "ana", 19);

La oss lage en ny tabell, “Test”, med to kolonner -ID og alder, uten primære nøkler. Etter det opprettet vi en unik indeks, “Unique_index”, på begge kolonnene og la til to unike poster og en duplikatrekord med innsatsen i instruksjon. Den tredje posten kaster en feil fordi begge kolonnens verdier er gjentatt.

SQLite> Opprett tabelltest (ID Int, Age Int);
SQLite> Lag unik indeks unik_index på test (id, alder);
sqlite> sett inn i test (ID, alder) verdier (1, 23);
sqlite> sett inn i test (ID, alder) verdier (2, 24);
sqlite> sett inn i test (ID, alder) verdier (2, 24);

Konklusjon:

Denne artikkelen handlet om bruk av forskjellige indekser i tabellkolonnene. Vi diskuterte bruken av indekser og prøvde å lage de enkle, sammensatte og unike indeksene på forskjellige tabellkolonner med Create Index -instruksjonen på slutten.