PostgreSQL

Kako stvoriti indekse u PostgreSQL-u

Kako stvoriti indekse u PostgreSQL-u

Indeksi su specijalizirane tablice pretraživanja koje koriste lovci podataka za ubrzanje rezultata upita. Indeks je referenca na podatke u tablici. Na primjer, ako imena u knjizi kontakata nisu abecednim redom, morali biste se spustiti prema dolje u svakom retku i pretraživati ​​svako ime prije nego što dođete do određenog telefonskog broja koji tražite. Indeks ubrzava naredbe SELECT i WHERE fraze, izvršavajući unos podataka u naredbama UPDATE i INSERT. Bez obzira jesu li indeksi umetnuti ili izbrisani, to nema utjecaja na informacije sadržane u tablici. Indeksi mogu biti posebni na isti način na koji UNIQUE ograničenje pomaže u izbjegavanju zapisa replika u polju ili skupu polja za koje indeks postoji.

Opća sintaksa

Sljedeća opća sintaksa koristi se za izradu indeksa.

>> CREATE INDEX ime_indeksa NA_ime_tablice (ime_stupca);

Da biste započeli raditi na indeksima, otvorite pgAdmin Postgresqla s trake aplikacija. U nastavku ćete pronaći opciju 'Poslužitelji'. Desnom tipkom miša kliknite ovu opciju i povežite je s bazom podataka.

Kao što vidite, baza podataka 'Test' navedena je u opciji 'Baze podataka'. Ako ga nemate, desnom tipkom miša kliknite "Baze podataka", pomaknite se do opcije "Stvori" i imenujte bazu podataka prema svojim željama.

Proširite opciju 'Sheme' i tamo ćete pronaći opciju 'Tablice'. Ako ga nemate, kliknite ga desnom tipkom miša, idite na "Stvori" i kliknite opciju "Tablica" da biste stvorili novu tablicu. Budući da smo tablicu već stvorili 'emp', možete je vidjeti na popisu.

Pokušajte s SELECT upitom u uređivaču upita kako biste dohvatili zapise tablice 'emp', kao što je prikazano u nastavku.

>> ODABERI * IZ javnog.emp REDOSLIJED "id" ASC;

Sljedeći podaci bit će u tablici 'emp'.

Stvorite indekse s jednim stupcem

Proširite tablicu 'emp' da biste pronašli razne kategorije, e.g., Stupci, ograničenja, indeksi itd. Desnom tipkom miša kliknite "Indeksi", pomaknite se do opcije "Stvori" i kliknite "Indeks" da biste stvorili novi indeks.

Konstruirajte indeks za zadanu tablicu 'emp' ili prikaz događaja, pomoću dijaloškog prozora Indeks. Ovdje postoje dvije kartice: 'Općenito' i 'Definicija."Na kartici" Općenito "u polje" Ime "umetnite određeni naslov za novi indeks. Odaberite 'tablični prostor' u kojem će se novi indeks pohranjivati ​​pomoću padajućeg popisa pored 'Tablični prostor.'Kao i u području' Komentar ', ovdje i indeksirajte komentare. Da biste započeli ovaj postupak, idite na karticu 'Definicija'.

Ovdje navedite 'Način pristupa' odabirom vrste indeksa. Nakon toga, da biste stvorili svoj indeks kao "Jedinstven", tamo je navedeno nekoliko drugih opcija. U području "Stupci" dodirnite znak "+" i dodajte nazive stupaca koji će se koristiti za indeksiranje. Kao što vidite, indeksiranje primjenjujemo samo na stupac "Telefon". Za početak odaberite SQL odjeljak.

Kartica SQL prikazuje SQL naredbu koju su kreirali vaši unosi tijekom dijaloga Indeks. Kliknite gumb 'Spremi' da biste stvorili indeks.

Ponovno idite na opciju "Tablice" i prijeđite na tablicu "emp". Osvježite opciju 'Indeksi' i u njoj ćete pronaći novostvoreni indeks 'index_on_phone'.

Sada ćemo izvršiti naredbu EXPLAIN SELECT kako bismo provjerili rezultate za indekse s klauzulom WHERE. To će rezultirati sljedećim rezultatom, koji kaže: 'Sljedeće skeniranje na emp.'Možda se pitate zašto se to dogodilo dok koristite indekse.

Razlog: Planer Postgres može iz različitih razloga odlučiti da neće imati indeks. Strateg većinu vremena donosi najbolje odluke, iako razlozi nisu uvijek jasni. U redu je ako se indeksno pretraživanje koristi u nekim upitima, ali ne u svim. Unosi vraćeni iz bilo koje tablice mogu se razlikovati, ovisno o fiksnim vrijednostima koje vraća upit. Budući da se to događa, skeniranje sekvenci gotovo je uvijek brže od skeniranja indeksa, što ukazuje na to da je možda planer upita bio u pravu kad je utvrdio da su troškovi izvođenja upita na ovaj način smanjeni.

Stvorite višestruke indekse stupaca

Da biste stvorili indekse s više stupaca, otvorite ljusku naredbenog retka i razmotrite sljedeću tablicu 'student' da biste započeli rad na indeksima s više stupaca.

>> ODABERI * IZ učenika;

U njega napišite sljedeći upit CREATE INDEX. Ovaj će upit stvoriti indeks pod nazivom 'new_index' u stupcima 'sname' i 'age' tablice 'student'.

>> IZRADI INDEKS new_index NA Student (sname, dob);

Sada ćemo navesti svojstva i atribute novostvorenog indeksa 'new_index' pomoću naredbe '\ d'. Kao što možete vidjeti na slici, ovo je indeks tipa btree koji je primijenjen na stupce 'sname' i 'age'.

>> \ d novi_indeks;

Stvorite JEDINSTVENI indeks

Da biste konstruirali jedinstveni indeks, pretpostavite sljedeću tablicu 'emp'.

>> ODABERI * IZ emp;

Izvršite upit CREATE UNIQUE INDEX u ljusci, nakon čega slijedi naziv indeksa 'empind' u stupcu 'name' tablice 'emp'. U izlazu možete vidjeti da se jedinstveni indeks ne može primijeniti na stupac s dvostrukim vrijednostima 'imena'.

>> IZRADI jedinstveni INDEKS empind ON emp (ime);

Obavezno primijenite jedinstveni indeks samo na stupce koji ne sadrže duplikate. Za tablicu 'emp' možete pretpostaviti da samo stupac 'id' sadrži jedinstvene vrijednosti. Dakle, na njega ćemo primijeniti jedinstveni indeks.

>> IZRADI jedinstveni INDEKS empind ON emp (id);

Slijede atributi jedinstvenog indeksa.

>> \ d ispražnjeno;

Indeks pada

Izraz DROP koristi se za uklanjanje indeksa iz tablice.

>> DROP INDEX isprazniti;

Zaključak

Iako su indeksi dizajnirani da poboljšaju učinkovitost baza podataka, u nekim slučajevima nije moguće koristiti indeks. Pri korištenju indeksa moraju se uzeti u obzir sljedeća pravila:

SuperTuxKart za Linux
SuperTuxKart sjajan je naslov osmišljen kako bi vam besplatno pružio iskustvo Mario Kart na vašem Linux sustavu. Prilično je izazovno i zabavno igrati...
Vodič za bitku za Wesnoth
Bitka za Wesnoth jedna je od najpopularnijih strateških igara otvorenog koda koje trenutno možete igrati. Ne samo da se ova igra razvija već jako dugo...
0 A.D. Vodič
Od mnogih strateških igara tamo, 0 A.D. uspijeva se istaknuti kao sveobuhvatan naslov i vrlo duboka, taktička igra unatoč tome što je otvoren izvor. R...