Você
left join venues
, mas você tem condições no where
cláusula nos venues
associados row, portanto, somente as linhas unidas serão retornadas. No entanto, esse é um problema secundário - continue lendo para saber por que você não precisa de uma associação. Em seguida, se a cidade for
vancouver
, não há necessidade de também teste para país ou estado. Finalmente, se você está tentando descobrir "quantos eventos futuros estão em Vancouver", você não precisa de uma adesão, pois o ID do local é uma constante!
Tente isto:
select count(*) as event_count
from events
where venueid = (select id from venues where city = 'vancouver')
and startdate > curdate()
and te_id != 0
O MySQL usará o índice em
venueid
sem que você precise usar uma dica. Se isso não acontecer, execute isto:analyze events
que atualizará as estatísticas da distribuição de dados nas colunas indexadas. Observe que, se muitos de seus eventos forem em Vancouver, é mais eficiente não use um índice (já que a maioria das linhas terá que ser acessada de qualquer maneira).