Du har left join venues
, men du har villkor i where
klausul om de förenade venues
rad, så endast sammanfogade rader kommer att returneras. Det är dock en sidofråga - läs vidare för varför du inte behöver gå med alls.
Nästa, om staden är vancouver
, det finns inget behov av att också testa för land eller stat.
Slutligen, om du försöker hitta "hur många framtida evenemang är det i Vancouver", behöver du inte gå med, eftersom platsens ID är konstant!
Prova detta:
select count(*) as event_count
from events
where venueid = (select id from venues where city = 'vancouver')
and startdate > curdate()
and te_id != 0
Mysql kommer att använda indexet på venueid
utan att du behöver använda en ledtråd. Om det inte gör det, kör detta:
analyze events
som kommer att uppdatera statistiken för datafördelningen i de indexerade kolumnerna. Observera att om många av dina evenemang är i Vancouver är det mer effektivt att inte använd ett index (eftersom de flesta raderna måste nås ändå).