PostgreSQL

Ako vytvárať indexy v PostgreSQL

Ako vytvárať indexy v PostgreSQL

Indexy sú špecializované tabuľky vyhľadávania, ktoré používajú motory lovu v databankách na urýchlenie výsledkov dotazov. Register je odkaz na informácie v tabuľke. Napríklad, ak mená v zozname kontaktov nie sú zoradené v abecednom poradí, museli by ste ísť dolu v každom riadku a hľadať v každom mene, kým dosiahnete konkrétne telefónne číslo, ktoré hľadáte. Register urýchľuje príkazy SELECT a frázy WHERE a vykonáva zadávanie údajov v príkazoch UPDATE a INSERT. Bez ohľadu na to, či sú indexy vložené alebo odstránené, nemá to žiadny vplyv na informácie obsiahnuté v tabuľke. Indexy môžu byť špeciálne rovnakým spôsobom, akým obmedzenie UNIQUE pomáha vyhnúť sa replikovaným záznamom v poli alebo množine polí, pre ktoré index existuje.

Všeobecná syntax

Na vytvorenie indexov sa používa nasledujúca všeobecná syntax.

>> CREATE INDEX index_name ON table_name (column_name);

Ak chcete začať pracovať na indexoch, otvorte na paneli aplikácií pgAdmin programu Postgresql. Ďalej nájdete možnosť „Servery“. Kliknite pravým tlačidlom myši na túto možnosť a pripojte ju k databáze.

Ako vidíte, databáza „Test“ je uvedená v možnosti „Databázy“. Ak ho nemáte, kliknite pravým tlačidlom myši na „Databázy“, prejdite na možnosť „Vytvoriť“ a pomenujte databázu podľa svojich preferencií.

Rozbaľte možnosť „Schémy“ a nájdete tam možnosť „Tabuľky“. Ak ju nemáte, kliknite na ňu pravým tlačidlom myši, prejdite na položku Vytvoriť a kliknutím na možnosť Tabuľka vytvorte novú tabuľku. Pretože sme už vytvorili tabuľku „emp“, môžete ju vidieť v zozname.

Vyskúšajte príkaz SELECT v editore dotazov a načítajte záznamy z tabuľky „emp“, ako je uvedené nižšie.

>> VYBERTE * Z verejné.emp OBJEDNAŤ „id“ ASC;

Nasledujúce údaje budú v tabuľke „emp“.

Vytvorte indexy jedného stĺpca

Rozbaľte tabuľku „emp“ a vyhľadajte rôzne kategórie, napr.g., Stĺpce, obmedzenia, indexy atď. Kliknite pravým tlačidlom myši na „Indexy“, prejdite na možnosť „Vytvoriť“ a kliknutím na položku „Register“ vytvorte nový index.

Zostavte index pre danú tabuľku „emp“ alebo výsledné zobrazenie pomocou dialógového okna Register. Tu sú dve karty: „Všeobecné“ a „Definícia.„Na karte„ Všeobecné “vložte do poľa„ Názov “konkrétny názov nového indexu. Pomocou rozbaľovacieho zoznamu vedľa položky „Tabuľkový priestor“ vyberte „tabuľkový priestor“, pod ktorým bude nový index uložený.„Rovnako ako v oblasti„ Komentár “tu môžete vytvárať komentáre k indexu. Tento proces zahájite prechodom na kartu Definícia.

Tu zadajte „metódu prístupu“ výberom typu indexu. Potom, aby ste vytvorili index ako „jedinečný“, je tu uvedených niekoľko ďalších možností. V oblasti „Stĺpce“ klepnite na znamienko „+“ a pridajte názvy stĺpcov, ktoré sa majú použiť na indexovanie. Ako vidíte, indexovanie uplatňujeme iba v stĺpci Telefón. Začnite výberom sekcie SQL.

Záložka SQL zobrazuje príkaz SQL, ktorý bol vytvorený vašimi vstupmi v dialógovom okne Register. Kliknutím na tlačidlo „Uložiť“ vytvoríte index.

Opäť prejdite na možnosť „Tabuľky“ a prejdite na tabuľku „emp“. Obnovte možnosť „Indexy“ a nájdete v nej uvedený novovytvorený index „index_on_phone“.

Teraz vykonáme príkaz EXPLAIN SELECT, aby sme skontrolovali výsledky indexov s klauzulou WHERE. Výsledkom bude nasledujúci výstup, ktorý hovorí: „Seq Scan on emp.„Možno sa čudujete, prečo sa to stalo, keď používate indexy.

Dôvod: Plánovač Postgres sa môže rozhodnúť, že nebude mať index, a to z rôznych dôvodov. Stratég robí väčšinu času najlepšie rozhodnutia, aj keď dôvody nie sú vždy jasné. Je v poriadku, ak sa v niektorých dotazoch používa indexové vyhľadávanie, ale nie vo všetkých. Položky vrátené z ktorejkoľvek tabuľky sa môžu líšiť v závislosti od pevných hodnôt vrátených dotazom. Pretože k tomu dôjde, sekvenčné skenovanie je takmer vždy rýchlejšie ako skenovanie indexu, čo naznačuje, že pravdepodobne plánovač dotazov mal pravdu pri určovaní toho, že náklady na spustenie dotazu týmto spôsobom sú znížené.

Vytvorte viac indexov stĺpcov

Ak chcete vytvoriť indexy s viacerými stĺpcami, otvorte shell príkazového riadku a zvážte nasledujúcu tabuľku „študent“, aby ste mohli začať pracovať na indexoch s viacerými stĺpcami.

>> VYBERTE * OD ŠTUDENTA;

Napíšte do nej nasledujúci dotaz CREATE INDEX. Tento dopyt vytvorí index s názvom „new_index“ v stĺpcoch „sname“ a „age“ tabuľky „student“.

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

Teraz uvedieme vlastnosti a atribúty novovytvoreného indexu „new_index“ pomocou príkazu „\ d“. Ako vidíte na obrázku, jedná sa o index typu btree, ktorý sa použil na stĺpce „sname“ a „age“.

>> \ d nový_index;

Vytvorte JEDINEČNÝ index

Ak chcete vytvoriť jedinečný index, predpokladajte nasledujúcu tabuľku „emp“.

>> SELECT * FROM emp;

Vykonajte dotaz CREATE UNIQUE INDEX v prostredí shellu, za ktorým nasleduje názov indexu „empind“ v stĺpci „name“ tabuľky „emp“. Na výstupe vidíte, že jedinečný index nemožno použiť na stĺpec s duplicitnými hodnotami názvu.

>> VYTVORTE jedinečný INDEX empind ON emp (meno);

Uistite sa, že jedinečný index použijete iba na stĺpce, ktoré neobsahujú duplikáty. V prípade tabuľky „emp“ môžete predpokladať, že iba stĺpec „id“ obsahuje jedinečné hodnoty. Použijeme na ňu teda jedinečný index.

>> VYTVORTE jedinečný INDEX empind ON emp (id);

Nasledujú atribúty jedinečného indexu.

>> \ d empid;

Drop index

Príkaz DROP sa používa na odstránenie indexu z tabuľky.

>> DROP INDEX empind;

Záver

Aj keď sú indexy určené na zlepšenie efektívnosti databáz, v niektorých prípadoch nie je možné index používať. Pri používaní indexu je potrebné brať do úvahy nasledujúce pravidlá:

Hry Ako vyvíjať hru v systéme Linux
Ako vyvíjať hru v systéme Linux
Pred desiatimi rokmi by len málo používateľov Linuxu predpovedalo, že ich obľúbený operačný systém bude jedného dňa populárnou hernou platformou pre k...
Hry Open source porty komerčných herných strojov
Open source porty komerčných herných strojov
Na hranie starých i niektorých z nedávnych herných titulov je možné využiť bezplatné hry s otvoreným zdrojom a multiplatformové herné enginy. V tomto ...
Hry Najlepšie hry z príkazového riadku pre systém Linux
Najlepšie hry z príkazového riadku pre systém Linux
Príkazový riadok nie je pri použití systému Linux iba vaším najväčším spojencom - môže byť tiež zdrojom zábavy, pretože ho môžete použiť na hranie mno...