sql >> Database >  >> RDS >> Mysql

Waarom is mijn zoekopdracht met meerdere kolommen aanzienlijk langzamer dan de overeenkomstige zoekopdrachten met één kolom, zelfs met een index met meerdere kolommen?

Heeft u een index stop_id, departure_time . aangemaakt ? Omdat departure_time, stop_id zal absoluut niets doen.

Dit is een echt moeilijke - het heeft alle mogelijke slechte dingen voor het omgaan met indexen :(

Je hebt een bereik, een OR en een niet-aangrenzende IN - erger kan het niet worden.

Probeer stop_id, departure_time en als het niet helpt, kun je niet veel anders doen dan overschakelen naar PostgreSQL.

U kunt ook proberen de query te herschrijven als:

SELECT * 
from stop_times 
WHERE ( stop_times.stop_id IN(51511,51509,51508,51510,6,53851,51522,51533)
      AND departure_time BETWEEN '02:41' AND '05:41'
      )
   OR ( stop_times.stop_id IN(51511,51509,51508,51510,6,53851,51522,51533)
      AND departure_time BETWEEN '26:41' AND '29:41' 
      ) 

of:

    SELECT * 
    from stop_times 
    WHERE ( stop_times.stop_id IN(51511,51509,51508,51510,6,53851,51522,51533)
          AND departure_time BETWEEN '02:41' AND '05:41'
          )
UNION ALL
    SELECT * 
    from stop_times 
    WHERE ( stop_times.stop_id IN(51511,51509,51508,51510,6,53851,51522,51533)
          AND departure_time BETWEEN '26:41' AND '29:41' 
          )


  1. Update externe database bij Cursusvoltooiing

  2. SQL DROP DATABASE-syntaxis - weergegeven door DBMS

  3. mysqli-verbinding werkt niet in functie?

  4. PHP MYSQL Blogarchief Menu per jaar en maand