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á).