Hai left join venues
, ma hai condizioni in where
clausola sulle venues
unite riga, quindi verranno restituite solo le righe unite. Tuttavia, questo è un problema secondario:continua a leggere perché non hai affatto bisogno di unirti.
Successivamente, se la città è vancouver
, non è necessario anche test per paese o stato.
Infine, se stai cercando di trovare "quanti eventi futuri ci sono a Vancouver", non hai bisogno di unirti, poiché l'ID della sede è una costante!
Prova questo:
select count(*) as event_count
from events
where venueid = (select id from venues where city = 'vancouver')
and startdate > curdate()
and te_id != 0
Mysql utilizzerà l'indice su venueid
senza che tu debba usare un suggerimento. In caso contrario, esegui questo:
analyze events
che aggiornerà le statistiche della distribuzione dei dati nelle colonne indicizzate. Tieni presente che se molti dei tuoi eventi sono a Vancouver, è più efficiente non usa un indice (poiché sarà comunque necessario accedere alla maggior parte delle righe).