En forespørgsel anmoder om specifikke data fra en database. I SQL bruger en forespørgsel SELECT til at angive kolonner, FROM til at angive tabeller og WHERE til at filtrere rækker. JOIN kombinerer tabeller. GROUP BY aggregerer. ORDER BY sorterer. Databasen analyserer forespørgslen, planlægger en udførelsesstrategi og returnerer resultaterne. Det samme spørgsmål kan stilles på mange måder, og nogle måder er meget hurtigere end andre.
Forespørgselsydelse afhænger af flere faktorer. Indekser fremskynder opslag på filtrerede kolonner. Forespørgselsplanlæggeren vælger mellem forskellige udførelsesstrategier baseret på statistik om dataene. Forældet statistik fører til dårlige planer. At skrive en forespørgsel, der bruger indekser effektivt, er en færdighed. En funktion, der anvendes på en indekseret kolonne i en WHERE-klausul, forhindrer indekset i at blive brugt. En forespørgsel, der vælger alle kolonner, når kun få er nødvendige, spilder båndbredde og hukommelse. En underforespørgsel, der kører én gang pr. række, er langsom. Den samme logik som en join er hurtig. Forespørgselsoptimering er delvist kunst, delvist videnskab. Databasen leverer værktøjer: EXPLAIN-planer, forespørgselsprofiler og ydeevnetællere. Det kræver øvelse at læse disse værktøjer. En forespørgsel, der kører på millisekunder på et lille datasæt, kan tage minutter på et stort datasæt. Forskellen er ofte planen, ikke hardwaren.
Forespørgselskomponenter
- VÆLG — kolonner, der skal returneres
- FRA — tabeller til forespørgsel
- HVOR — rækkefiltre
- JOIN — kombiner tabeller
- GROUP EFTER — samlede rækker
- SORTER EFTER — sorter resultater
En forespørgsel er et spørgsmål. Databasen besvarer det. Kvaliteten af svaret afhænger af, hvordan spørgsmålet stilles.
Comments
No comments yet. Be the first to share a thought.
Leave a comment