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

Hvordan forbedrer man denne MySQL-forespørgsel ved hjælp af join?

Du har left join venues , men du har betingelser i where klausul om de sammensluttede venues række, så kun sammenføjede rækker returneres. Det er dog et sidespørgsmål - læs videre for, hvorfor du slet ikke har brug for en joinforbindelse.

Dernæst, hvis byen er vancouver , det er ikke nødvendigt at også test for land eller stat.

Endelig, hvis du prøver at finde "hvor mange fremtidige begivenheder er der i Vancouver", behøver du ikke at deltage, da spillestedets id er konstant!

Prøv dette:

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

Mysql vil bruge indekset på venueid uden at du behøver bruge et tip. Hvis det ikke gør det, skal du udføre dette:

analyze events

som vil opdatere statistikken over datafordelingen i de indekserede kolonner. Bemærk, at hvis mange af dine begivenheder er i Vancouver, er det mere effektivt at ikke brug et indeks (da de fleste rækker alligevel skal tilgås).



  1. Sådan:Opret trigger for automatisk opdaterings ændret dato med SQL Server 2008

  2. Sikkerhedsregler for arv overtrådt efter type:'MySql.Data.Entity.MySqlEFConfiguration'

  3. Vælg efter måned i et felt

  4. Fjernelse af foranstillede nuller fra varchar sql developer