Een query vraagt specifieke gegevens op uit een database. In SQL gebruikt een query SELECT om kolommen te specificeren, FROM om tabellen te specificeren en WHERE om rijen te filteren. JOIN combineert tabellen. GROUP BY aggregeert. ORDER BY sorteert. De database analyseert de query, plant een uitvoeringsstrategie en retourneert de resultaten. Dezelfde vraag kan op veel manieren gesteld worden, en sommige manieren zijn veel sneller dan andere.
De prestaties van een query hangen af van verschillende factoren. Indexen versnellen zoekopdrachten in gefilterde kolommen. De queryplanner kiest tussen verschillende uitvoeringsstrategieën op basis van statistieken over de gegevens. Verouderde statistieken leiden tot slechte uitvoeringsplannen. Het schrijven van een query die indexen effectief gebruikt, is een vaardigheid. Een functie die wordt toegepast op een geïndexeerde kolom in een WHERE-clausule, voorkomt dat de index wordt gebruikt. Een query die alle kolommen selecteert terwijl er maar een paar nodig zijn, verspilt bandbreedte en geheugen. Een subquery die één keer per rij wordt uitgevoerd, is traag. Dezelfde logica als een join is snel. Queryoptimalisatie is deels kunst, deels wetenschap. De database biedt tools: EXPLAIN-plannen, queryprofilers en prestatiemeters. Het interpreteren van deze tools vereist oefening. Een query die in milliseconden wordt uitgevoerd op een kleine dataset, kan minuten duren op een grote. Het verschil zit hem vaak in het uitvoeringsplan, niet in de hardware.
Query-componenten
- SELECT — kolommen die geretourneerd moeten worden
- VAN — tabellen om op te vragen
- WAAR — rijfilters
- JOIN — tabellen combineren
- GROUP BY — rijen samenvoegen
- SORTEREN OP — sorteer resultaten
Een query is een vraag. De database beantwoordt die vraag. De kwaliteit van het antwoord hangt af van hoe de vraag gesteld wordt.
Comments
No comments yet. Be the first to share a thought.
Leave a comment