PostgreSQL

Indexen maken in PostgreSQL

Indexen maken in PostgreSQL

Indices zijn gespecialiseerde zoektabellen die worden gebruikt door zoekmachines voor databanken om zoekopdrachtresultaten te versnellen. Een index is een verwijzing naar de informatie in een tabel. Als de namen in een contactenboek bijvoorbeeld niet alfabetisch zijn, moet u elke rij naar beneden gaan en elke naam doorzoeken voordat u het specifieke telefoonnummer bereikt waarnaar u zoekt. Een index versnelt de SELECT-commando's en WHERE-frases en voert gegevensinvoer uit in de UPDATE- en INSERT-commando's. Ongeacht of indexen worden ingevoegd of verwijderd, er is geen invloed op de informatie in de tabel. Indexen kunnen op dezelfde manier speciaal zijn als de UNIEKE beperking helpt om replicarecords te vermijden in het veld of de set velden waarvoor de index bestaat.

Algemene syntaxis

De volgende algemene syntaxis wordt gebruikt om indexen te maken:.

>> CREATE INDEX index_name ON table_name (column_name);

Om aan indexen te werken, opent u de pgAdmin van Postgresql vanuit de toepassingsbalk. U vindt de optie 'Servers' hieronder weergegeven. Klik met de rechtermuisknop op deze optie en verbind deze met de database.

Zoals u kunt zien, wordt de database 'Test' vermeld in de optie 'Databases'. Als u er geen heeft, klikt u met de rechtermuisknop op 'Databases', navigeert u naar de optie 'Maken' en geeft u de database een naam volgens uw voorkeuren.

Vouw de optie 'Schema's' uit en u zult de optie 'Tabellen' daar vinden. Als je er geen hebt, klik er dan met de rechtermuisknop op, ga naar 'Maken' en klik op de optie 'Tabel' om een ​​nieuwe tabel te maken. Aangezien we de tabel 'emp' al hebben gemaakt, kunt u deze in de lijst zien.

Probeer de SELECT-query in de Query-editor om de records van de 'emp'-tabel op te halen, zoals hieronder weergegeven.

>> KIES * VAN openbaar.emp BESTELLEN DOOR “id” ASC;

De volgende gegevens staan ​​in de 'emp'-tabel.

Indexen met één kolom maken

Vouw de 'emp'-tabel uit om verschillende categorieën te vinden, e.g., Kolommen, beperkingen, indexen, enz. Klik met de rechtermuisknop op 'Indexen', navigeer naar de optie 'Maken' en klik op 'Index' om een ​​nieuwe index te maken.

Construeer een index voor de gegeven 'emp'-tabel, of eventuated display, met behulp van het Index-dialoogvenster. Hier zijn er twee tabbladen: 'Algemeen' & 'Definitie.' Voeg op het tabblad 'Algemeen' een specifieke titel voor de nieuwe index in het veld 'Naam' in. Kies de 'tablespace' waaronder de nieuwe index zal worden opgeslagen met behulp van de vervolgkeuzelijst naast 'Tablespace'.'  Maak hier, net als in het gedeelte 'Opmerkingen', indexopmerkingen. Om dit proces te starten, gaat u naar het tabblad 'Definitie'.

Geef hier de 'Toegangsmethode' op door het indextype te selecteren. Daarna, om uw index als 'Uniek' te maken, zijn er verschillende andere opties die daar worden vermeld. Tik in het gebied 'Kolommen' op het '+'-teken en voeg de kolomnamen toe die voor indexering moeten worden gebruikt. Zoals u kunt zien, hebben we indexering alleen toegepast op de kolom 'Telefoon'. Selecteer om te beginnen de sectie SQL.

Het tabblad SQL toont het SQL-commando dat is gemaakt door uw invoer in het dialoogvenster Index. Klik op de knop 'Opslaan' om de index te maken.

Nogmaals, ga naar de optie 'Tabellen' en navigeer naar de tabel 'emp'. Vernieuw de optie 'Indexen' en u zult de nieuw gemaakte 'index_on_phone'-index erin vinden.

Nu zullen we het EXPLAIN SELECT-commando uitvoeren om de resultaten voor de indexen te controleren met de WHERE-component. Dit zal resulteren in de volgende uitvoer, die zegt: 'Seq Scan on emp'.' Je vraagt ​​je misschien af ​​waarom dit is gebeurd terwijl je indexen gebruikt.

Reden: De Postgres-planner kan om verschillende redenen besluiten geen index te hebben. De strateeg neemt meestal de beste beslissingen, ook al zijn de redenen niet altijd duidelijk. Het is prima als een indexzoekopdracht wordt gebruikt in sommige zoekopdrachten, maar niet in alle. De items die uit beide tabellen worden geretourneerd, kunnen variëren, afhankelijk van de vaste waarden die door de query worden geretourneerd. Omdat dit gebeurt, is een sequentiescan bijna altijd sneller dan een indexscan, wat aangeeft dat de queryplanner misschien gelijk had door te bepalen dat de kosten om de query op deze manier uit te voeren, worden verlaagd.

Meerdere kolomindexen maken

Om indexen met meerdere kolommen te maken, opent u de opdrachtregel-shell en overweegt u de volgende tabel 'student' om aan indexen met meerdere kolommen te werken.

>> KIES * VAN Student;

Schrijf de volgende CREATE INDEX-query erin:. Met deze query wordt een index gemaakt met de naam 'new_index' in de kolommen 'sname' en 'age' van de tabel 'student'.

>> MAAK INDEX new_index ON Student (naam, leeftijd);

Nu zullen we de eigenschappen en attributen van de nieuw aangemaakte 'new_index' index weergeven met het '\d' commando. Zoals u op de afbeelding kunt zien, is dit een index van het btree-type die is toegepast op de kolommen 'naam' en 'leeftijd'.

>> \d nieuwe_index;

UNIEKE Index maken

Ga uit van de volgende 'emp'-tabel om een ​​unieke index te construeren:.

>> KIES * UIT werk;

Voer de CREATE UNIQUE INDEX-query uit in de shell, gevolgd door de indexnaam 'empind' in de 'name'-kolom van de 'emp'-tabel. In de uitvoer kunt u zien dat de unieke index niet kan worden toegepast op een kolom met dubbele 'naam'-waarden.

>> MAAK unieke INDEX empind ON emp (naam);

Zorg ervoor dat u de unieke index alleen toepast op kolommen die geen duplicaten bevatten. Voor de tabel 'emp' mag u ervan uitgaan dat alleen de kolom 'id' unieke waarden bevat. We zullen er dus een unieke index op toepassen.

>> MAAK unieke INDEX empind ON werkn (id);

Hieronder volgen de kenmerken van de unieke index:.

>> \d schijn;

Index laten vallen

De DROP-instructie wordt gebruikt om een ​​index uit een tabel te verwijderen.

>> DROP INDEX empind;

Conclusie

Hoewel indexen zijn ontworpen om de efficiëntie van databases te verbeteren, is het in sommige gevallen niet mogelijk om een ​​index te gebruiken. Bij het gebruik van een index moeten de volgende regels in acht worden genomen:

Beste gamepad-toewijzingsapps voor Linux
Als je graag games op Linux speelt met een gamepad in plaats van een typisch toetsenbord- en muisinvoersysteem, zijn er enkele handige apps voor jou. ...
Handige hulpmiddelen voor Linux-gamers
Als je graag games op Linux speelt, is de kans groot dat je apps en hulpprogramma's zoals Wine, Lutris en OBS Studio hebt gebruikt om de game-ervaring...
HD Remastered Games voor Linux die nog nooit eerder een Linux-release hebben gehad
Veel game-ontwikkelaars en uitgevers komen met HD-remaster van oude games om de levensduur van franchise te verlengen, fans die compatibiliteit met mo...