PostgreSQL

Kā izveidot indeksus PostgreSQL

Kā izveidot indeksus PostgreSQL

Indeksi ir specializētas meklēšanas tabulas, kuras datu banku medību dzinēji izmanto, lai paātrinātu vaicājumu rezultātus. Indekss ir atsauce uz tabulas informāciju. Piemēram, ja kontaktu grāmatas vārdi nav alfabēti, jums ir jāiet lejup katrā rindā un jāpārmeklē visi vārdi, pirms esat sasniedzis konkrēto meklējamo tālruņa numuru. Indekss paātrina komandas SELECT un WHERE frāzes, veicot datu ievadi komandās UPDATE un INSERT. Neatkarīgi no tā, vai indeksi ir ievietoti vai dzēsti, tabulā ietverto informāciju neietekmē. Indeksi var būt īpaši tādā pašā veidā, kā UNIQUE ierobežojums palīdz izvairīties no kopiju ierakstiem laukā vai lauku komplektā, kuram ir indekss.

Vispārējā sintakse

Lai izveidotu indeksus, tiek izmantota šāda vispārējā sintakse.

>> CREATE INDEX index_name ON tabulas_nosaukums (kolonnas_nosaukums);

Lai sāktu darbu ar rādītājiem, no lietojumprogrammu joslas atveriet pgAdmin of Postgresql. Zemāk būs redzama opcija “Serveri”. Ar peles labo pogu noklikšķiniet uz šīs opcijas un pievienojiet to datu bāzei.

Kā redzat, datu bāze “Test” ir norādīta opcijā “Databases”. Ja jums tāda nav, ar peles labo pogu noklikšķiniet uz Datu bāzes, pārejiet uz opciju Izveidot un nosauciet datu bāzi atbilstoši savām vēlmēm.

Izvērsiet opciju “Shēmas”, un tajā atradīsit opciju “Galdi”. Ja jums tāda nav, ar peles labo pogu noklikšķiniet uz tās, dodieties uz 'Izveidot' un noklikšķiniet uz opcijas 'Tabula', lai izveidotu jaunu tabulu. Tā kā tabula 'emp' jau ir izveidota, to var redzēt sarakstā.

Mēģiniet vaicājuma redaktorā atlasīt vaicājumu, lai ielādētu tabulas 'emp' ierakstus, kā parādīts zemāk.

>> ATLASĪT * NO publiskas.emp PASŪTĪT AR “id” ASC;

Šie dati būs tabulā “emp”.

Izveidojiet vienas kolonnas indeksus

Paplašiniet tabulu “emp”, lai atrastu dažādas kategorijas, piem.g., Kolonnas, ierobežojumi, rādītāji utt. Ar peles labo pogu noklikšķiniet uz “Indeksi”, pārejiet uz opciju “Izveidot” un noklikšķiniet uz “Indekss”, lai izveidotu jaunu indeksu.

Izmantojot dialoglodziņu Indekss, izveidojiet indeksu norādītajai tabulai 'emp' vai iespējamam displejam. Šeit ir divas cilnes: "Vispārīgi" un "Definīcija".Cilnē “Vispārīgi” laukā “Nosaukums” ievietojiet īpašu jaunā indeksa nosaukumu. Izmantojot nolaižamo sarakstu blakus tabulām, izvēlieties tabulu vietu, zem kuras tiks saglabāts jaunais indekss.Tāpat kā apgabalā “Komentārs”, komentārus šeit sniedziet. Lai sāktu šo procesu, dodieties uz cilni Definīcija.

Šeit norādiet “Piekļuves metodi”, atlasot indeksa veidu. Pēc tam, lai izveidotu indeksu kā “Unikāls”, tur ir norādītas vairākas citas iespējas. Apgabalā “Kolonnas” pieskarieties “+” zīmei un pievienojiet kolonnu nosaukumus, kas jāizmanto indeksēšanai. Kā redzat, indeksēšanu mēs lietojām tikai kolonnā Tālrunis. Lai sāktu, atlasiet sadaļu SQL.

Cilnē SQL tiek parādīta SQL komanda, kuru jūsu ievades ir izveidojušas visā Indeksa dialoglodziņā. Lai izveidotu indeksu, noklikšķiniet uz pogas Saglabāt.

Atkal dodieties uz opciju “Galdi” un dodieties uz tabulu “emp”. Atsvaidziniet opciju “Indeksi”, un tajā atradīsit jaunizveidoto indeksu “index_on_phone”.

Tagad mēs izpildīsim komandu EXPLAIN SELECT, lai pārbaudītu indeksu rezultātus ar klauzulu WHERE. Tā rezultātā tiks iegūts šāds rezultāts, kurā teikts: “Seq Scan on emp."Jums var rasties jautājums, kāpēc tas notika, kad izmantojat indeksus.

Iemesls: Postgres plānotājs dažādu iemeslu dēļ var izlemt, ka tam nav indeksa. Stratēģis lielākoties pieņem labākos lēmumus, kaut arī iemesli ne vienmēr ir skaidri. Tas ir labi, ja dažos vaicājumos tiek izmantota indeksu meklēšana, bet ne visos. Jebkuras tabulas atgrieztie ieraksti var atšķirties atkarībā no vaicājuma atgrieztajām nemainīgajām vērtībām. Tā kā tas notiek, secības skenēšana gandrīz vienmēr ir ātrāka nekā indeksa skenēšana, kas norāda, ka, iespējams, vaicājumu plānotājam bija taisnība, nosakot, ka šādā veidā tiek veiktas vaicājuma izpildes izmaksas.

Izveidojiet vairākus kolonnu indeksus

Lai izveidotu vairāku kolonnu indeksus, atveriet komandrindas čaulu un apsveriet šo tabulu “students”, lai sāktu darbu ar rādītājiem ar vairākām kolonnām.

>> SELECT * NO studenta;

Tajā ierakstiet šādu vaicājumu CREATE INDEX. Šis vaicājums tabulas “students” slejās “sname” un “age” izveidos indeksu “new_index”.

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

Tagad mēs uzskaitīsim jaunizveidotā indeksa “new_index” īpašības un atribūtus, izmantojot komandu “\ d”. Kā redzat attēlā, tas ir btree tipa indekss, kas tika lietots kolonnās “sname” un “age”.

>> \ d new_index;

Izveidojiet UNIKĀLU indeksu

Lai izveidotu unikālu indeksu, pieņemiet šādu tabulu “emp”.

>> SELECT * FROM emp;

Apvalkā izpildiet vaicājumu CREATE UNIQUE INDEX, kam seko indeksa nosaukums 'empind' tabulas 'emp' kolonnā 'name'. Izejā varat redzēt, ka unikālo indeksu nevar izmantot kolonnai ar “name” vērtību dublikātiem.

>> IZVEIDOT unikālu INDEX empind ON emp (nosaukums);

Noteikti lietojiet unikālo indeksu tikai tām kolonnām, kurās nav dublikātu. Tabulā “emp” jūs varat pieņemt, ka tikai kolonnā “id” ir unikālas vērtības. Tātad, mēs tam piemērosim unikālu indeksu.

>> IZVEIDOT unikālu INDEX empind ON emp (id);

Tālāk ir norādīti unikālā indeksa atribūti.

>> \ d tukšs;

Pilienu indekss

DROP priekšrakstu izmanto, lai noņemtu indeksu no tabulas.

>> DROP INDEX empind;

Secinājums

Kaut arī indeksi ir izstrādāti, lai uzlabotu datu bāzu efektivitāti, dažos gadījumos indeksu nav iespējams izmantot. Izmantojot indeksu, jāņem vērā šādi noteikumi:

Kā parādīt FPS skaitītāju Linux spēlēs
Linux spēles ieguva lielu impulsu, kad Valve 2012. gadā paziņoja par Linux atbalstu Steam klientam un viņu spēlēm. Kopš tā laika daudzas AAA un indie ...
Kā lejupielādēt un atskaņot Sid Meier Civilization VI operētājsistēmā Linux
Ievads spēlē Civilization 6 ir mūsdienīga klasiskā koncepcija, kas ieviesta Age of Empires spēļu sērijā. Ideja bija diezgan vienkārša; jūs sāktu pašā ...
Kā instalēt un spēlēt Doom uz Linux
Ievads liktenī Doom sērija radās 90. gados pēc sākotnējā Doom izlaišanas. Tas bija tūlītējs hīts, un kopš tā laika spēļu sērija ir saņēmusi daudzas ba...