Ik had al een eerste deel gemaakt. Het leek me een goed moment om een deel 2 te maken.
Bij het zoeken naar platte tekstgegevens, zoals steden of namen, zorgen jokertekens voor de breedst mogelijke zoekopdracht. De breedste zoekopdracht is echter ook de meest inefficiënte zoekopdracht.
Wanneer een leidende wildcard wordt gebruikt, vooral in combinatie met een einde-wildcard, is de database belast met het doorzoeken van alle records op een overeenkomst overal binnen het geselecteerde veld.
SELECT City FROM Clients WHERE City LIKE ‘%Her%’
Deze query haalt de verwachte resultaten van Herenthout, Herent en Herentals op. Maar het zal echter ook onverwachte resultaten opleveren, zoals Baarle-Hertog, Scherpenheuvel en Sint – Lambrechts – Herk.
Een efficiëntere query zou zijn:
SELECT City FROM Clients WHERE City LIKE ‘Her%’
Deze query haalt echter alleen de verwachte resultaten van Herenthout, Herentals en Herent op.
Voordat u voor de eerste keer een query uitvoert, moet u ervoor zorgen dat de resultaten wenselijk en zinvol zijn door een LIMIT-instructie te gebruiken.
In sommige DBMS-systemen wordt het woord TOP door elkaar gebruikt met LIMIT.
De LIMIT-instructie retourneert alleen het aantal opgegeven records. Het gebruik van een LIMIT-instructie voorkomt dat de productiedatabase wordt belast met een grote zoekopdracht, alleen om erachter te komen dat de zoekopdracht moet worden bewerkt of verfijnd.
SELECT Client.ClientID, Client.Name, Count(Sales.SalesID)
FROM Client
INNER JOIN Sales ON Client.ClientID = Sales.ClientID
WHERE Sales.LastSaleDate BETWEEN #1/1/2021# AND #12/31/2021#
GROUP BY Client.ClientID, Client.Name
LIMIT 10
We kunnen aan de hand van de steekproef zien of we een bruikbare dataset hebben of niet.
Om de impact van uw analytische query’s op de productiedatabase te minimaliseren, moet u met een DBA praten over het plannen van de query zodat deze buiten de piekuren wordt uitgevoerd.
Dit is meestal midden in de nacht (2 – 5 uur ’s ochtends).
Hoe meer van de volgende criteria uw zoekopdracht heeft, hoe groter de kans dat… :
Kiezen uit grote tabellen (>1.000.000 records)
JOIN WHERE of CROSS JOINs
Lus / loop instructies
SELECT DISTINCT-instructies
geneste subquery’s
Zoeken met jokertekens – wildcards in lange tekst- of memovelden
Meerdere schemaquery’s
Tijdens de ontwikkeling is het mogelijk dat u tabellen aan de query toevoegt die uiteindelijk geen invloed zullen hebben op de geretourneerde gegevens. Door de JOINS naar deze onnodige tabellen te verwijderen, verkort u de verwerkingstijd van de extra gegevens, zoals
SELECT Client.FirstName, Client.LastName, Client.Address, Client.City, Client.State, Client.Zip FROM Client INNER JOIN Orders ON Client. ClientID = Orders.ClientID
Uit de query blijkt dat de tabel Orders helemaal niet wordt gebruikt, die moet uit de query worden verwijderd.