Je hebt left join venues
, maar je hebt voorwaarden in de where
clausule op de samengevoegde venues
rij, dus alleen samengevoegde rijen worden geretourneerd. Dat is echter een bijzaak - lees verder waarom je helemaal geen lidmaatschap nodig hebt.
Vervolgens, als de stad vancouver
is , het is niet nodig om ook test voor land of staat.
Tot slot, als je probeert te achterhalen "hoeveel toekomstige evenementen zijn er in Vancouver", dan heb je geen lidmaatschap nodig, aangezien de locatie-ID een constante is!
Probeer dit:
select count(*) as event_count
from events
where venueid = (select id from venues where city = 'vancouver')
and startdate > curdate()
and te_id != 0
Mysql gebruikt de index op venueid
zonder dat je een hint hoeft te gebruiken. Als dit niet het geval is, voert u dit uit:
analyze events
waarmee de statistieken van de gegevensdistributie in de geïndexeerde kolommen worden bijgewerkt. Houd er rekening mee dat als veel van uw evenementen in Vancouver plaatsvinden, het efficiënter is om niet . te doen gebruik een index (omdat de meeste rijen toch moeten worden geopend).