WAT IS DATABASE INDEX: Hoe werkt het en wat doet het?

database index SQL het belang van een database index typen indexen

SQL-database-indexering is het proces van het categoriseren en ordenen van gegevensrecords. Iedereen die met een database werkt, zou de tijdsbesparing waarderen die deze functie biedt bij het zoeken naar specifieke gegevens. In dit artikel hebben we de definitie van een database-index-SQL, de typen en het belang van een database-index onderzocht. Geniet van de rit!

Wat is database-index?

Database-indexen zijn gegevensstructuren die het sneller opzoeken van tabellen mogelijk maken. De database werkt nog steeds zonder indexen, maar het kan langer duren voordat query's resultaten opleveren. Elke index bevat een sleutel die is samengesteld uit gegevens uit een of meer kolommen in de bijbehorende tabel. De database kan ervoor kiezen om een ​​index te gebruiken om het ophalen van records te versnellen wanneer een query toegang vereist tot een tabel met een index.

Wanneer een gebruiker een zoekopdracht invoert, voert de zoekopdracht doorgaans een lineaire zoekopdracht uit in elke rij, waarbij wordt gecontroleerd of een ervan de gewenste informatie bevat. Dit wordt vereenvoudigd door het gebruik van een index, wat de productiviteit verhoogt omdat het de tijd verkort die nodig is om taken uit te voeren.

Soorten database-indexen

Er zijn verschillende soorten database-indexen. Dit zijn de soorten database-indexen:

#1. Primaire index in DBMS

De primaire database-index is een geordend bestand met twee velden en een vaste lengte. Het eerste veld fungeert als primaire sleutel en het tweede veld geeft aan welk datablok de gespecificeerde informatie bevat. Er is altijd een één-op-één-correspondentie tussen primaire database-indexvermeldingen. Er zijn twee verschillende soorten hoofdindexering die worden gebruikt in DBMS.

  • Dichte Index
  • Schaarse Index

#2. Secundaire index in DBMS

Een kandidaatsleutel in een databasebeheersysteem (DBMS) is een veld met een unieke waarde voor elk item. Het is een type index dat gegevens niet groepeert in clusters. Deze methode voor het indexeren van een database op twee niveaus wordt gebruikt om de grootte van het initiële toewijzingsniveau te minimaliseren. Daarom wordt voor de beginfase een breed scala aan gehele getallen gekozen, terwijl de afbeeldingsgrootte zelf vast bescheiden blijft.

Wat doet indexeren?

Een ongesorteerde tabel in een volgorde plaatsen die de zoekefficiëntie verbetert via query's, wordt bereikt door indexering. Niet-geïndexeerde tabellen vereisen een lineaire zoekopdracht over de rijen, omdat de query onmogelijk de volgorde van de rijen kan kennen en zichzelf dienovereenkomstig kan optimaliseren. Dat wil zeggen dat de zoekopdrachten elke rij moeten doorlopen om de rijen te vinden die aan de criteria voldoen. Dit kan, zoals je kunt verwachten, behoorlijk wat tijd in beslag nemen. 

Hoe werkt de database-index?

Het is onpraktisch om te verwachten dat de databasetabel zichzelf reorganiseert wanneer de queryomstandigheden veranderen om de queryprestaties te verbeteren. Wat er eigenlijk gebeurt, is dat de database een data structuur als reactie op de index. Een B-Tree is waarschijnlijk het type gegevensstructuur dat wordt gebruikt. De B-Tree heeft verschillende voordelen, maar het feit dat hij gemakkelijk gesorteerd kan worden, is voor onze behoeften het belangrijkste. Vanwege het bovenstaande zou het geen verrassing moeten zijn dat een gesorteerde datastructuur de effectiviteit van onze zoekopdracht verbetert.

Merk op dat wanneer de database-index een structuur opbouwt voor een bepaalde kolom, deze alleen informatie over die kolom opslaat; er zijn geen andere kolommen opgenomen. 

U kunt ook lezen:

Tips voor het maken van een database-index

Hier volgen de tips om een ​​database-index te maken:

#1. Index volgens werklast

Er kan een efficiënte database-index worden gemaakt als reactie op de hoeveelheid gegevens die wordt verwerkt. In plaats van het proces voor het maken van een index te baseren op het aantal tabellen dat u heeft (waardoor het moeilijker kan worden om toegang te krijgen), richt u zich op het maken van een database-index die het zoeken naar bepaalde termen vergemakkelijkt.

#2. U moet gebruik maken van predikaten

Het maken van een database-index met predikaten is een andere haalbare optie. Een predikaat is een soort voorwaarde-expressie die wordt gebruikt om de waarheidswaarde van een bewering te bepalen. Naast het vereenvoudigen van de ontwikkeling van een database-index, helpt dit de gebruiker om weloverwogen keuzes te maken over welke gegevens moeten worden opgehaald.

Om de gereedschappen en benodigdheden te vinden die nodig zijn voor een bouwproject, kan een database die voor die branche is ontworpen predikaten in de index gebruiken. Een medewerker zou het kunnen gebruiken om na te gaan of dezelfde materialen enkele maanden eerder in een soortgelijk project zijn gebruikt.

Een index die is afgestemd op de meest populaire database-index-SQL-query's wordt ook vaak geconstrueerd voor optimale efficiëntie. Hierin is mogelijk een overzicht opgenomen van alle mogelijke database-index-SQL-query's en hun geschatte gebruiksfrequentie, waarbij de meest cruciale zijn gemarkeerd.

Dit kan handig zijn als een school een standaard zoekactie in de database moet uitvoeren, bijvoorbeeld om uit te zoeken welke kinderen het vaakst thuis zijn gebeld of die langdurig afwezig zijn door ziekte. Dit is handig in geval van nood, omdat het het snel en gemakkelijk opvragen van de contactgegevens van hun ouders vergemakkelijkt.

#4. Vermijd de noodzaak om te sorteren door een index te maken

Het maken van een index die niet hoeft te worden gesorteerd, kan het vermogen van een query om de gewenste gegevens op te halen, versnellen. Een databasegebruiker kan de records vaak handmatig sorteren met behulp van de clausules 'Group by' en 'Order by'. U kunt de databasesnelheid optimaliseren door een index te bouwen op de kolommen die door deze twee soorten worden gebruikt. Aangezien het sorteren van records niet nodig is, kunnen query's verder worden geoptimaliseerd.

#5. Maak unieke indexen

Medewerkers hebben vaak de taak om een ​​aantal unieke indexen te maken bij het ontwikkelen van een effectieve database. Dit is cruciaal omdat het gegevensbeschadiging voorkomt door de mogelijkheid van duplicaten in de kolommen van een tabel te elimineren. Beperkingen, of de regels die de gegevens in een tabel altijd moeten volgen, worden door de overgrote meerderheid van databasesystemen gebruikt om unieke indexen te genereren. Er wordt ook een primaire sleutel gebruikt om de identificatie van gegevens in een tabel te vergemakkelijken.

#6. Overweeg buitenlandse sleutels

Een medewerker kan de prestaties van de database optimaliseren door indexen te maken die betrekking hebben op elke externe sleutel die door de database wordt gebruikt. Externe sleutels zijn een groep kolommen in een database die toegang geeft tot tabellen in een andere database. Deze indexen zijn in de meeste databasesystemen niet vereist, maar kunnen de productiviteit toch verhogen. De database bevat mogelijk niet alle informatie die een medewerker nodig heeft, maar deze sleutel kan hem wel naar het juiste resultaat in een andere database leiden.

#7. Voeg kolommen in, exclusief voor gebruik van database-indexen

Een medewerker kan het onder bepaalde omstandigheden nuttig vinden om meerdere database-index-only-kolommen aan zijn database toe te voegen. Een werker kan nu snel alleen-indexinformatie ophalen. Dit is zodat alle door de gebruiker ingevoerde zoekopdrachten alleen hoeven te zoeken binnen deze nieuw toegevoegde indexkolommen. Dit versnelt het proces van het verstrekken van de specifieke gegevens die een werknemer nodig heeft. Maar er moet worden opgemerkt dat de werknemer nu de andere query's moet controleren om te zien of de nieuwe kolommen van invloed zijn op hun vermogen om hun werk te doen.

#8. Vermijd een limiet op het aantal indexen

Het wordt aanbevolen om het aantal indexen in een database niet te beperken wanneer deze wordt gemaakt. Om een ​​database correct te optimaliseren, verdient het de voorkeur om zoveel mogelijk indexen te hebben, omdat elke index fungeert als een optimalisatieprogramma dat het proces van het ophalen van gegevens versnelt. Het is vermeldenswaard dat dit niet alleen nuttig is voor de persoon in kwestie; op de meeste werkplekken worden databases en de informatie die ze bevatten gedeeld met werknemers. Dit betekent dat het de potentie heeft om de output binnen een organisatie te stimuleren.

#9. Controleer of er veel implicaties zijn voor gegevenswijzigingen

Om tijd te besparen kan een werknemer het invoeren van gegevens liever overslaan. Dit kunnen ze bereiken door na te denken over de resultaten van eventuele wijzigingen in de gegevens. Er zijn enkele opties om dit te bereiken. Een medewerker kan bijvoorbeeld naar de indexen van de tabel kijken. De kans is groot dat het toevoegen van een andere database-index de prestaties niet significant zal beïnvloeden als er al meer indexen dan kolommen zijn. Een medewerker kan ook de uitvoeringstijd van een query controleren door deze tegen de tabel uit te voeren. De waarde van het maken van een database-index hangt af van hoe lang het duurt om de query uit te voeren.

Als een werknemer gegevens moet toevoegen of verwijderen om zijn eigen indexen te genereren, kan hij dit doen nadat hij de impact op de rest van de database heeft overwogen. Het zou bijvoorbeeld dwaas zijn om telefoonnummers te verwijderen die het bedrijf met een specifieke werknemer verbinden als de database vol staat met contactgegevens van leveranciers.

Hoe een database-index intern werkt

Database-index SQL is intern gestructureerd als bomen. Database-indexen worden grafisch weergegeven als bomen, waarbij individuele records de bladeren vervangen. Meerdere knooppunten verbonden door aanwijzers vormen de structuur van de indexboom van een database.

Wanneer de opdracht CREATE INDEX wordt uitgevoerd, wordt een indexstructuur gegenereerd. Een algoritme in het databaseprogramma is verantwoordelijk voor het maken van de indexboom. De indexconstructieprocedure begint met een stap om records te sorteren op de indexsleutel. Zodra alle knooppunten in de boomindex zijn gemaakt, wordt de structuur er bovenop gebouwd. Als er veel records in een database zijn, kan het maken van een indexboom tijdrovend zijn.

Om een ​​specifieke rij in de tabel te vinden, moeten we onze indexzoekopdracht beginnen bij het bladknooppunt. Bij elke splitsing in de weg moet een keuze worden gemaakt welk pad te nemen. Dit vereist een diepgaande analyse van de zoekcriteria en de waarden die binnen elke vork vallen. Neem het geval van het zoeken naar het getal 12 in een boom met twee takken als een heel eenvoudige illustratie. De cijfers 0-10 bevinden zich in Tak X, terwijl 11-20 zich bevinden in Tak Y. Aangezien 12 hoger is dan 11, moet u daar kijken.

De B-boom is een voorbeeld van een gespecialiseerde indexboom. Evenwichtige bomen, of B-bomen, hebben hetzelfde aantal knooppunten van de wortel tot elk bladknooppunt.

Hoe een database-index onder de motorkap werkt

Een index is slechts een gegevensstructuur die gemakkelijke toegang biedt tot relevante informatie door verwijzingen naar individuele items op te slaan. Bij afwezigheid van een index worden rijen met gegevens in een database vaak op een ongeorganiseerde "hoop" bewaard. Microsoft SQL Server en Azure SQL Database hebben beide een schakelaar waarmee u deze functie kunt in- of uitschakelen.

In werkelijkheid worden gegevens zelden volledig ongestructureerd bewaard. Primaire sleutels, die in MySQL hetzelfde kunnen zijn als indexen, worden meestal in plaats daarvan gebruikt; ze kunnen de vorm aannemen van een automatisch oplopend geheel getal. De "binaire" efficiëntie van sorteren (met unieke waarden) is echter beperkt tot een query die op de geordende kolom filtert, omdat er slechts één kolom mag worden gebruikt om de gegevens te sorteren. Een tabel met een index kan efficiënt worden doorzocht met behulp van binair zoeken, aangezien deze op veel kolommen kan worden gesorteerd.

Wanneer u een kolom indexeert, maakt u in feite een nieuwe tabel met twee kolommen: de kolom die u heeft geïndexeerd en een verwijzing naar de locatie van het item dat u zoekt. De index zal dezelfde lengte hebben als de oorspronkelijke tabel, maar de breedte zal aanzienlijk kleiner zijn, waardoor er minder schijfblokken nodig zijn om op te slaan en te doorlopen. In MySQL zijn pointers vaak kleiner dan 5 bytes. Voor degenen die geïnteresseerd zijn om dieper te duiken, legt de "legendarische" Stack Overflow-post waarnaar hierboven wordt verwezen, de rekenkunde uit achter het benodigde aantal blokken voor opslag.

Tenzij u ze helemaal opnieuw heeft opgebouwd, heeft uw huidige database waarschijnlijk talloze indexen.

Belang van een database-index

Het belang van een database-index kan nooit worden verwaarloosd, maar ze brengen kosten met zich mee in de vorm van extra schrijfbewerkingen en de behoefte aan extra opslagruimte om de dubbele kopie van gegevens up-to-date te houden. Een ander belang van een database-index is dat ze regelmatig moeten worden onderhouden om optimale prestaties te garanderen. De voordelen van het gebruik van indexen wegen echter veel zwaarder dan het kleine ongemak van het onderhoud ervan. Indexen hebben regelmatig onderhoud nodig om goed te kunnen functioneren. Indexreconstructies, reorganisaties en controles op fragmentatie vallen onder deze categorie taken.

De kosten van het hebben van indexen

Zoals de meeste andere dingen in het leven, kosten indexen geld. Alle indexen in een tabel moeten worden vernieuwd als een van de rijen in die tabel wordt gewijzigd (via INSERT, UPDATE of DELETE). Deze aanpassingen kosten tijd, en wanneer er meerdere indexen in een database bestaan, kunnen de prestaties van een proces dat uitgebreid tabellen bewerkt, eronder lijden.

We moeten de voordelen afwegen tegen de kosten van het samenstellen van een index voordat we verder gaan. Kunnen we een merkbare efficiëntieverbetering verwachten? Is dit een statistische tabel of is deze uitgebreid gemanipuleerd? Kunnen we leven met een daling van de prestaties terwijl we de tafel aanpassen? De resultaten van dit onderzoek zullen ons vertellen of de index al dan niet moet worden gemaakt. Sommige databases hebben zelfs de mogelijkheid om automatisch indexen samen te stellen en te verwijderen als dat nodig is.

Dingen om niet te vergeten over database-index

Het volgende zijn dingen die u niet mag vergeten over de database-index:

  • Indexeren omvat de toevoeging van een gegevensstructuur met kolommen met zoekcriteria en een aanwijzer.
  • De aanwijzer is de locatie van de geheugenschijf van de rij met de resterende gegevens.
  • Het sorteren van de indexgegevensstructuur verbetert de queryprestaties.
  • Een query lokaliseert de gewenste rij in de index; eenmaal gelokaliseerd, biedt de index een verwijzing naar de rest van de gegevens.
  • Met de index hoeft de query maar vier rijen te bekijken in plaats van zeventien.

Wat is een index voor dummies?

Een index is een numerieke waarde die wordt gebruikt als maatstaf. Het is een term die wordt gebruikt om een ​​kwantitatieve analyse van de beweging van een beveiligingsmarkt te beschrijven. Beursindexen en obligatiemarktindices op de financiële markten bestaan ​​elk uit een fictieve portefeuille van effecten die bedoeld zijn om de hele markt of een deel daarvan te vertegenwoordigen.

Wat is het doel van indexeren?

Indexering is een statistische tool voor het monitoren van economische indicatoren zoals inflatie, werkloosheid, BBP-groei, productiviteit en beursrendementen.

Conclusie

Een index is veel efficiënter dan medewerkers de database voortdurend te laten herschikken als reactie op nieuwe vragen. De index daarentegen genereert zijn eigen interne databasehiërarchie. Een database-index kan bijvoorbeeld een B-Tree-structuur gebruiken. Ook worden knooppunten met twee of meer vertakkingen ondersteund, zodat werkers verder kunnen gaan dan eenvoudige binaire zoekopdrachten.

Referenties

Laat een reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *

Dit vind je misschien ook leuk