Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego moje zapytanie wielokolumnowe jest znacznie wolniejsze niż odpowiadające zapytania jednokolumnowe, nawet z indeksem wielokolumnowym?

Czy utworzyłeś indeks stop_id, departure_time? ? Ponieważ departure_time, stop_id nie zrobi absolutnie nic.

To jest naprawdę trudny - ma wszelkie możliwe złe rzeczy do radzenia sobie z indeksami :(

Masz zasięg, OR i nieciągłe IN – nie ma nic gorszego.

Wypróbuj stop_id, departure_time a jeśli to nie pomoże, nie możesz nic zrobić poza przejściem na PostgreSQL.

Możesz także spróbować przepisać zapytanie jako:

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' 
      ) 

lub:

    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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mac OS X Lion - mysql:nie znaleziono polecenia

  2. Optymalizacja MySQL na tabelach łączenia z kryteriami zakresu

  3. Nieprzechwycony wyjątek „PDOException” z komunikatem „SQLSTATE[HY093]:nieprawidłowy numer parametru”

  4. Jak ukryć hasło Mysql w docker-compose za pomocą env_file

  5. Replikacja MySQL:błędne transakcje w replikacji opartej na GTID