PostgreSQL

Indeksite loomine PostgreSQL-is

Indeksite loomine PostgreSQL-is

Indeksid on spetsiaalsed otsingutabelid, mida andmebaasijahimootorid kasutavad päringutulemuste kiirendamiseks. Indeks on viide tabeli teabele. Näiteks kui kontaktiraamatu nimesid pole tähestikulises järjekorras, peate enne otsitava konkreetse telefoninumbri juurde jõudmist minema alla igas reas ja otsima kõik nimed. Indeks kiirendab käske SELECT ja WHERE, tehes andmete sisestamist käskudesse UPDATE ja INSERT. Sõltumata indeksite lisamisest või kustutamisest ei mõjuta see tabelis sisalduvat teavet. Indeksid võivad olla erilised samamoodi nagu ainulaadne piirang aitab vältida koopiakirjeid selles valdkonnas või väljade komplektis, mille jaoks register on olemas.

Üldine süntaks

Indeksite loomiseks kasutatakse järgmist üldist süntaksit.

>> CREATE INDEX indeksnimi SEES tabeli_nimi (veeru_nimi);

Indeksite kallal töötamise alustamiseks avage rakenduste ribalt Postgresqli pgAdmin. Leiate allpool valiku "Serverid". Paremklõpsake sellel suvandil ja ühendage see andmebaasiga.

Nagu näete, on andmebaas 'Test' loetletud suvandis 'Andmebaasid'. Kui teil seda pole, paremklõpsake „Andmebaasid”, navigeerige valikule „Loo” ja andke andmebaasile nimi vastavalt oma eelistustele.

Laiendage valikut "Skeemid" ja leiate seal loetletud valiku "Tabelid". Kui teil seda pole, paremklõpsake sellel, navigeerige jaotisse „Loo” ja klõpsake uue tabeli loomiseks valikut „Tabel”. Kuna oleme tabeli 'emp' juba loonud, näete seda loendis.

Proovige päringiredaktoris päringut SELECT, et tuua tabeli 'emp' kirjed, nagu allpool näidatud.

>> VALI * avalikult.emp telli “id” ASC järgi;

Järgmised andmed on tabelis 'emp'.

Looge ühe veeruga indeksid

Erinevate kategooriate leidmiseks laiendage tabelit „emp”, nt.g., Veerud, piirangud, indeksid jne. Paremklõpsake nuppu 'Indeksid', navigeerige suvandini 'Loo' ja klõpsake uue indeksi loomiseks nuppu 'Indeks'.

Konstrueerige antud 'emp' tabeli indeks või sündmusega kuvar, kasutades dialoogiakna Indeks. Siin on kaks vahelehte: 'Üldine' ja 'Definitsioon."Vahekaardil" Üldine "sisestage väljale" Nimi "uue registri konkreetne pealkiri. Valige tabeliruum, kuhu uus register salvestatakse, kasutades rippmenüüd loendi „Tabeliruum” kõrval.Nagu kommenteerimisalal, tehke siin ka kommentaare. Selle protsessi alustamiseks navigeerige vahekaardile Definitsioon.

Siin määrake "Juurdepääsumeetod", valides indeksitüübi. Pärast seda on oma indeksi loomiseks "Unikaalne" loetletud veel mitu võimalust. Puudutage piirkonnas 'Veerud' märki '+' ja lisage indekseerimiseks kasutatavad veerunimed. Nagu näete, oleme indekseerimist rakendanud ainult veerule „Telefon”. Alustuseks valige jaotis SQL.

Vahekaart SQL näitab SQL-i käsku, mille teie sisendid on loonud kogu Indeksidialoogi vältel. Indeksi loomiseks klõpsake nuppu "Salvesta".

Jällegi minge valikule "Tabelid" ja navigeerige tabelisse "emp". Värskendage valikut "Indeksid" ja leiate vastloodud indeksi "index_on_phone".

Nüüd täidame käsu EXPLAIN SELECT, et kontrollida indeksite tulemusi WHERE klausliga. Selle tulemuseks on järgmine väljund, mis ütleb: "Seq Scan on emp.Te võite mõelda, miks see juhtus indeksite kasutamise ajal.

Põhjus: Postgresi planeerija võib erinevatel põhjustel otsustada, et tal pole indeksit. Strateeg teeb enamasti parimad otsused, kuigi põhjused pole alati selged. On hea, kui mõnes päringus kasutatakse indeksiotsingut, kuid mitte kõigis. Mõlemast tabelist tagastatud kirjed võivad varieeruda sõltuvalt päringu tagastatud fikseeritud väärtustest. Kuna see juhtub, on järjestuse skaneerimine peaaegu alati kiirem kui indeksskannimine, mis näitab, et võib-olla oli päringu planeerijal õigus, kui ta otsustas, et päringu sellisel viisil käitamise kulud on väiksemad.

Looge mitu veergude indeksit

Mitme veeruga indeksite loomiseks avage käsurea kest ja kaaluge järgmist tabelit 'student' mitme veeruga indeksitega töötamise alustamiseks.

>> VALI * õpilasest;

Kirjutage sellesse järgmine CREATE INDEX päring. Selle päringuga luuakse tabeli "õpilane" veergudesse "sname" ja "age" register nimega "new_index".

>> CREATE INDEX new_index ON Student (sname, age);

Nüüd loetleme käsu '\ d' abil vastloodud 'new_index' indeksi atribuudid ja atribuudid. Nagu pildilt näha, on see btree-tüüpi register, mida rakendati veergudel „sname” ja „age”.

>> \ d new_index;

Loo ainulaadne register

Unikaalse indeksi koostamiseks eeldage järgmist tabelit 'emp'.

>> VALI * FROM emp;

Käivitage kestas CREATE UNIQUE INDEX päring, millele järgneb tabeli 'emp' veerus 'name' indeksi nimi 'empind'. Väljundis näete, et ainulaadset indeksit ei saa rakendada veerule, millel on duplikaadi "nimi" väärtused.

>> LOE unikaalne INDEX empind ON emp (nimi);

Rakendage ainulaadne register ainult veergudel, mis ei sisalda duplikaate. Tabeli 'emp' puhul võite eeldada, et ainulaadseid väärtusi sisaldab ainult veerg 'id'. Niisiis rakendame sellele ainulaadse indeksi.

>> LOE unikaalne INDEX empind ON emp (id);

Järgnevad ainulaadse indeksi atribuudid.

>> \ d tühi;

Drop Index

DROP-lauset kasutatakse indeksi eemaldamiseks tabelist.

>> DROP INDEX emind;

Järeldus

Kui indeksid on loodud andmebaaside tõhususe parandamiseks, ei ole mõnel juhul siiski võimalik indeksit kasutada. Indeksi kasutamisel tuleb arvestada järgmiste reeglitega:

Parimad Oculus App Lab mängud
Kui olete Oculuse peakomplekti omanik, peate olema teadlik külglaadimisest. Kõrvalaadimine on protsess, millega installitakse peakomplekti mitte-poesi...
10 parimat mängu, mida Ubuntu kaudu mängida
Windowsi platvorm on olnud üks mängude domineerivaid platvorme, kuna tohutu protsent mänge areneb täna Windowsi loomupäraseks toetamiseks. Kas keegi s...
5 parimat arkaadmängu Linuxile
Tänapäeval on arvutid tõsised mängimiseks kasutatavad masinad. Kui te ei saa uut rekordit, teate, mida ma mõtlen. Selles postituses saate teada mõnda ...