PostgreSQL

Kako ustvariti indekse v PostgreSQL

Kako ustvariti indekse v PostgreSQL

Indeksi so specializirane iskalne tabele, ki jih uporabljajo lovci podatkovnih bank za pospeševanje rezultatov poizvedb. Kazalo je sklic na informacije v tabeli. Če na primer imena v imeniku niso razporejena po abecedi, se morate spraviti navzdol po vsaki vrstici in iskati po vseh imenih, preden dosežete določeno telefonsko številko, ki jo iščete. Indeks pospeši ukaze SELECT in fraze WHERE ter izvede vnos podatkov v ukaza UPDATE in INSERT. Ne glede na to, ali so indeksi vstavljeni ali izbrisani, to ne vpliva na informacije v tabeli. Indeksi so lahko posebni na enak način, da omejitev UNIQUE pomaga izogniti se kopijam zapisov v polju ali naboru polj, za katera indeks obstaja.

Splošna sintaksa

Naslednja splošna sintaksa se uporablja za ustvarjanje indeksov.

>> USTVARI INDEKS ime_indeksa NA ime_tabele (ime_ stolpca);

Če želite začeti delati na indeksih, odprite pgAdmin Postgresql v vrstici z aplikacijami. Spodaj je prikazana možnost 'Strežniki'. Z desno miškino tipko kliknite to možnost in jo povežite z bazo podatkov.

Kot lahko vidite, je baza podatkov "Test" navedena v možnosti "Databases". Če ga nimate, z desno miškino tipko kliknite »Zbirke podatkov«, se pomaknite do možnosti »Ustvari« in poimenujte bazo podatkov po svojih željah.

Razširite možnost 'Sheme' in tam boste našli možnost 'Tabele'. Če ga nimate, ga z desno miškino tipko kliknite, se pomaknite do možnosti »Ustvari« in kliknite možnost »Tabela«, da ustvarite novo tabelo. Ker smo tabelo 'emp' že ustvarili, jo lahko vidite na seznamu.

Poskusite poizvedbo SELECT v urejevalniku poizvedb, da pridobite zapise tabele 'emp', kot je prikazano spodaj.

>> IZBERI * IZ javnega.emp ORDER BY "id" ASC;

Naslednji podatki bodo v tabeli 'emp'.

Ustvarite indekse z enim stolpcem

Razširite tabelo 'emp', da poiščete različne kategorije, npr.g., Stolpci, omejitve, indeksi itd. Z desno miškino tipko kliknite »Kazala«, se pomaknite do možnosti »Ustvari« in kliknite »Kazalo«, da ustvarite nov indeks.

Z uporabo pogovornega okna Indeks ustvarite indeks za dano tabelo 'emp' ali prikaz dogodkov. Tu sta dva zavihka: 'Splošno' in 'Opredelitev.V zavihek »Splošno« v polje »Ime« vstavite določen naslov novega indeksa. Na spustnem seznamu poleg možnosti »Tablespace« izberite »prostor tabel«, v katerem bo nov indeks shranjen.'Tako kot v področju' Komentar 'tudi tukaj vnesite indeksne komentarje. Če želite začeti ta postopek, pojdite na zavihek "Definicija".

Tu določite "Način dostopa" z izbiro vrste indeksa. Potem je za ustvarjanje indeksa kot »Edinstven« naštetih še nekaj drugih možnosti. V območju »Stolpci« tapnite znak »+« in dodajte imena stolpcev, ki jih želite uporabiti za indeksiranje. Kot lahko vidite, smo indeksiranje uporabljali samo za stolpec 'Telefon'. Za začetek izberite razdelek SQL.

Zavihek SQL prikazuje ukaz SQL, ki so ga ustvarili vaši vnosi v celotnem dialogu Indeks. Kliknite gumb 'Shrani', da ustvarite indeks.

Ponovno pojdite na možnost »Tabele« in se pomaknite do tabele »emp«. Osvežite možnost 'Kazala' in v njej boste našli novo ustvarjeni indeks 'index_on_phone'.

Zdaj bomo izvedli ukaz EXPLAIN SELECT za preverjanje rezultatov indeksov s stavkom WHERE. Rezultat tega bo naslednji izpis, ki pravi: 'Seq Scan on emp.'Morda se sprašujete, zakaj se je to zgodilo med uporabo indeksov.

Razlog: Načrtovalec Postgres se lahko iz različnih razlogov odloči, da ne bo imel indeksa. Strateg največkrat sprejema najboljše odločitve, čeprav razlogi niso vedno jasni. V redu je, če se pri nekaterih poizvedbah uporablja iskanje po indeksu, pri vseh pa ne. Vnosi, vrnjeni iz obeh tabel, se lahko razlikujejo, odvisno od fiksnih vrednosti, ki jih vrne poizvedba. Ker se to zgodi, je zaporedni pregled skoraj vedno hitrejši od indeksnega, kar kaže na to, da je morda načrtovalec poizvedb imel prav, ko je ugotovil, da se zmanjšajo stroški teka poizvedbe na ta način.

Ustvarite več indeksov stolpcev

Če želite ustvariti indekse z več stolpci, odprite lupino ukazne vrstice in upoštevajte naslednjo tabelo "študent", da začnete delati na indeksih z več stolpci.

>> IZBERI * IZ študenta;

Vanjo napišite naslednjo poizvedbo CREATE INDEX. Ta poizvedba bo ustvarila indeks z imenom 'new_index' v stolpcih 'sname' in 'age' tabele 'student'.

>> USTVARI KAZALO new_index ON Študent (sname, starost);

Zdaj bomo z ukazom \ d navedli lastnosti in atribute novo ustvarjenega indeksa 'new_index'. Kot lahko vidite na sliki, gre za indeks tipa btree, ki je bil uporabljen za stolpca "sname" in "age".

>> \ d new_index;

Ustvari UNIKATEN indeks

Če želite zgraditi unikatni indeks, predpostavimo naslednjo tabelo 'emp'.

>> IZBERI * IZ emp;

Izvedite poizvedbo CREATE UNIQUE INDEX v lupini, ki ji sledi ime indeksa 'empind' v stolpcu 'name' tabele 'emp'. V izhodnih podatkih lahko vidite, da enoličnega indeksa ni mogoče uporabiti za stolpec s podvojenimi vrednostmi "imena".

>> USTVARI edinstveni INDEKS empind ON emp (ime);

Edinstveni indeks uporabite samo za stolpce, ki ne vsebujejo dvojnikov. Za tabelo 'emp' lahko domnevate, da samo stolpec 'id' vsebuje edinstvene vrednosti. Torej bomo zanj uporabili edinstven indeks.

>> USTVARI unikatni INDEKS empind ON emp (id);

Sledijo atributi unikatnega indeksa.

>> \ d izpraznjen;

Indeks padca

Stavek DROP se uporablja za odstranjevanje indeksa iz tabele.

>> DROP INDEX izprazni;

Zaključek

Čeprav so indeksi namenjeni izboljšanju učinkovitosti baz podatkov, v nekaterih primerih indeksa ni mogoče uporabiti. Pri uporabi indeksa je treba upoštevati naslednja pravila:

Najboljši emulatorji igralne konzole za Linux
V tem članku bo navedena priljubljena programska oprema za emulacijo igralne konzole, ki je na voljo za Linux. Emulacija je sloj združljivosti program...
Najboljši Linux Distros za igre na srečo v letu 2021
Operacijski sistem Linux je daleč od prvotnega, preprostega, strežniškega videza. Ta OS se je v zadnjih letih izjemno izboljšal in se je zdaj razvil v...
Kako zajeti in pretakati svojo igralno sejo v Linuxu
V preteklosti je bilo igranje iger le hobi, sčasoma pa je igralniška industrija zabeležila veliko rast glede tehnologije in števila igralcev. Občinstv...