Mysql
 sql >> Database >  >> RDS >> Mysql

Come migliorare questa query MySQL usando join?

Hai left join venues , ma hai condizioni in where clausola sulle venues unite riga, quindi verranno restituite solo le righe unite. Tuttavia, questo è un problema secondario:continua a leggere perché non hai affatto bisogno di unirti.

Successivamente, se la città è vancouver , non è necessario anche test per paese o stato.

Infine, se stai cercando di trovare "quanti eventi futuri ci sono a Vancouver", non hai bisogno di unirti, poiché l'ID della sede è una costante!

Prova questo:

select count(*) as event_count
from events
where venueid = (select id from venues where city = 'vancouver')
and startdate > curdate() 
and te_id != 0

Mysql utilizzerà l'indice su venueid senza che tu debba usare un suggerimento. In caso contrario, esegui questo:

analyze events

che aggiornerà le statistiche della distribuzione dei dati nelle colonne indicizzate. Tieni presente che se molti dei tuoi eventi sono a Vancouver, è più efficiente non usa un indice (poiché sarà comunque necessario accedere alla maggior parte delle righe).