Mysql
 sql >> база данни >  >> RDS >> Mysql

Защо моята заявка с няколко колони е драматично по-бавна от съответните заявки с една колона, дори и с индекс от няколко колони?

Създадохте ли индекс stop_id, departure_time ? Тъй като departure_time, stop_id няма да направи абсолютно нищо.

Това е наистина труден - има всички възможни лоши неща за работа с индекси :(

Имате диапазон, ИЛИ и несвързан IN - няма да стане по-лошо от това.

Опитайте stop_id, departure_time и ако не помогне, тогава не можете да направите нищо друго освен да преминете към PostgreSQL.

Можете също да опитате да пренапишете заявката като:

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

или:

    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. Крипто валута MySQL типове данни?

  2. моят nodejs скрипт не излиза сам след успешно изпълнение

  3. Преместване на сайта на Wordpress към Docker:Грешка при установяване на DB връзка

  4. SQL заявка с присъединяване за получаване на вложен масив от обекти

  5. Промяната на datadir във файла my.ini не се спазва в WAMP