Sobes.tech
Senior

Taak 4: Optimaliseer de query WHERE DATE(tep.available_from_departure_date) = departureDate. Leg het probleem uit en stel een oplossing voor.

sobes.tech AI

Antwoord van AI

Het probleem met de query WHERE DATE(tep.available_from_departure_date) = departureDate is dat het toepassen van de functie DATE() op de kolom available_from_departure_date ervoor zorgt dat de index op deze kolom niet wordt gebruikt, en de database een volledige tabelscan moet uitvoeren, wat de prestaties sterk vermindert.

De optimale oplossing is om de voorwaarde zo te herschrijven dat de functie niet op de kolom wordt toegepast, maar op de parameter, of gebruik te maken van een datumbereik. Bijvoorbeeld, als departureDate een datum zonder tijd is, kan je het zo doen:

WHERE tep.available_from_departure_date >= departureDate
  AND tep.available_from_departure_date < departureDate + INTERVAL 1 DAY

Op deze manier controleert de voorwaarde of available_from_departure_date binnen het interval ligt van het begin van departureDate tot het begin van de volgende dag, wat het gebruik van de index op de kolom mogelijk maakt en de query aanzienlijk versnelt.