left join venues , ale máte podmínky v where klauzule o spojených venues řádek, takže budou vráceny pouze spojené řádky. To je však vedlejší záležitost – čtěte dále, proč připojení vůbec nepotřebujete.
Další, pokud je město vancouver , není třeba také test pro zemi nebo stát.
A konečně, pokud se snažíte najít "kolik budoucích akcí je ve Vancouveru", nepotřebujete se připojit, protože id místa je konstantní!
Zkuste toto:
select count(*) as event_count
from events
where venueid = (select id from venues where city = 'vancouver')
and startdate > curdate()
and te_id != 0
Mysql použije index na venueid aniž byste museli použít nápovědu. Pokud ne, proveďte toto:
analyze events
který bude aktualizovat statistiku distribuce dat v indexovaných sloupcích. Pamatujte, že pokud se mnoho vašich akcí koná ve Vancouveru, je efektivnější ne použijte index (protože většina řádků bude muset být stejně přístupná).