Du har left join venues
, men du har betingelser i where
klausul om de sammensluttede venues
række, så kun sammenføjede rækker returneres. Det er dog et sidespørgsmål - læs videre for, hvorfor du slet ikke har brug for en joinforbindelse.
Dernæst, hvis byen er vancouver
, det er ikke nødvendigt at også test for land eller stat.
Endelig, hvis du prøver at finde "hvor mange fremtidige begivenheder er der i Vancouver", behøver du ikke at deltage, da spillestedets id er konstant!
Prøv dette:
select count(*) as event_count
from events
where venueid = (select id from venues where city = 'vancouver')
and startdate > curdate()
and te_id != 0
Mysql vil bruge indekset på venueid
uden at du behøver bruge et tip. Hvis det ikke gør det, skal du udføre dette:
analyze events
som vil opdatere statistikken over datafordelingen i de indekserede kolonner. Bemærk, at hvis mange af dine begivenheder er i Vancouver, er det mere effektivt at ikke brug et indeks (da de fleste rækker alligevel skal tilgås).