MySQL - небольшое изменение в пределе имеет большое изменение во времени выборки - PullRequest
0 голосов
/ 29 октября 2019

У меня есть набор данных среднего размера около 4 м строк.

Выполнение моего запроса:

SELECT id
     , var1
     , var2 
  FROM table1 
 WHERE date< "2019-10-29" 
   and date>="2018-10-29" 
   and company_id = 17 
 LIMIT 260;

возвращает 253 строки и занимает длительность = 0,171 / выборка = 15,22 с.

Но когда я изменяю запрос, чтобы ограничить его 240 строками:

SELECT id
     , var1
     , var2 
  FROM table1 
 WHERE date< "2019-10-29" 
   and date>="2018-10-29" 
   and company_id = 17 
 LIMIT 240;

Это займет всего 0,25 с / 0,000 с.

Почему изменение предела сильно влияетвремя выборки?

  • Дополнительным вариантом является то, что если я ограничу диапазон дат, чтобы вернуть меньше строк, это странным образом снова увеличивает время выборки (возможно, из-за того, что число или строки меньше, чем предел?)

1 Ответ

0 голосов
/ 30 октября 2019

Я, кажется, исправил это, добавив индекс к таблице:

create index var1_index on table1(var1);
...