Database indexering
Hoe word de indexering geregeld in de database engine? Worden hier apart tabellen gemaakt of files waarin het per colom word geïndexeerd?
In de link heb ik een opzet gemaakt hoe ik denk dat geïndexeerd word, graag hoor ik of dit de mainier is of dat het heel anders werkt
codepen
Thanks alvast
*.frm - Hier staan de tabel-defintiies in
*.myd - Hier staat de data van de tabellen in, waaruit je database bestaat.
*.myi - Hier staan de indexfiles van MyISAM in
Maar in de praktijk zul je hier niks mee hoeven te doen.
Het enige wat je moet doen is zelf een (bij sterke voorkeur, genormaliseerde) structuur maken waarin je jouw data kan opslaan. Dit kan bijvoorbeeld met phpMyAdmin, of HeidiSQL.
Jouw voorbeeld laat niks anders zien dan een simpel stukje HTML met wat opmaak en inhoud. Hiervan is niks geindexeerd omdat het gewoon 'hardcoded' is en geschreven staat in je layout. Als je deze opzet wilt vertalen naar een tabel, dan zit ik tot nu toe te denken aan één tabel omdat er één soort entiteit gebruikt wordt, en dat zijn de producten.
index op Product:
Dus enkel de primary key in een andere volgorde. (Blauw staat alfabetisch boven aan en heeft id 4. Geel staat op de tweede plaats en heeft id 1 enz.)
Gewijzigd op 24/02/2017 01:42:22 door Frank Nietbelangrijk
Andere databases geven je keuzes tussen verschillende typen, afhankelijk van het type kolom dat je wilt indexeren. PostgreSQL geeft je bijvoorbeeld de optie om full text kolommen als zodanig te indexeren, dit is een index die gebaseerd is op de afstand tussen verschillende waarden. Hier is de layout sowieso al anders: ieder bestand is genaamd naar het OID van het betreffende object.
Ik zal mijn vraag anders stellen. Indexeren is dat het zelfde als op alfabetische volgorde zetten zoals in mijn html voorbeeld?
Zodat een engine de info sneller vind bij het opvragen
Niet helemaal, indexeren is het maken van een inhoudsopgave, vergelijkbaar met een legenda in een atlas.
Stel, je hebt drie soorten fruit:
- Aardbeien
- Appels
- Bananen
Op de eerste letter kun je die als volgt groeperen:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
+-----------+ +-----------+
| A | | B |
+-----------+ +-----------+
| Aardbeien | | Bananen |
| Appels | +-----------+
+-----------+
| A | | B |
+-----------+ +-----------+
| Aardbeien | | Bananen |
| Appels | +-----------+
+-----------+
Zoek je de Bananen, dan heb je die in één stap gevonden, want onder de B in de index staan alleen Bananen.
Voor het andere fruit moeten we nog een niveau aan de index toevoegen:
Nog een laatste vraagje hierover: Waaruit bepaal je hoeveel levels je index word, en word voor alle kolommen een index gemaakt ?
voorbeeld staat een kolom die maar twee mogelijke waarden heeft (voorraad: ja/nee). Bij slechts twee toestanden — en daarmee onder andere bij booleaanse waarden — heeft een index ook geen zin.
Als de volledige tekst van een boek in slechts twee woorden is geschreven, heb je een index nodig die even groot is als het boek zelf om in kaart te brengen waar die woorden in het boek voorkomen.
In je Als de volledige tekst van een boek in slechts twee woorden is geschreven, heb je een index nodig die even groot is als het boek zelf om in kaart te brengen waar die woorden in het boek voorkomen.