sql >> データベース >  >> RDS >> Mysql

結合を使用してこのMySQLクエリを改善するにはどうすればよいですか?

    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
    

    これにより、インデックス付きの列のデータ分布の統計が更新されます。イベントの多くがバンクーバーで行われている場合は、しない方が効率的であることに注意してください。 インデックスを使用します(とにかくほとんどの行にアクセスする必要があるため)。



    1. OracleでSQLチューニングを行う方法

    2. Accessで重複レコードを見つける方法

    3. 挿入する前に重複を確認してください

    4. XMLデータをSQLServerデータベース列に細断処理す​​るための最良の方法