left join venues
があります 、ただし、where
に条件があります 結合されたvenues
の句 行なので、結合された行のみが返されます。ただし、これは副次的な問題です。参加する必要がまったくない理由を読んでください。
次に、都市がvancouver
の場合 、またする必要はありません 国または州をテストします。
最後に、「バンクーバーで今後開催されるイベントの数」を検索する場合は、会場IDが一定であるため、参加する必要はありません。
これを試してください:
select count(*) as event_count
from events
where venueid = (select id from venues where city = 'vancouver')
and startdate > curdate()
and te_id != 0
Mysqlはvenueid
のインデックスを使用します ヒントを使用する必要はありません。そうでない場合は、これを実行します:
analyze events
これにより、インデックス付きの列のデータ分布の統計が更新されます。イベントの多くがバンクーバーで行われている場合は、しない方が効率的であることに注意してください。 インデックスを使用します(とにかくほとんどの行にアクセスする必要があるため)。