WBS
Новичок
Есть две большие таблицы:
Запрос:
Этот запрос выполняется очень долго. Выражение "DATEDIFF(dt_end, dt_start) + 1" почти всегда равно 1, иногда 2-3. Даже убедившись, что n, равное 3, уже больше "DATEDIFF(dt_end, dt_start) + 1", MySQL перебирает все строки из таблицы series (десятки и сотни тысяч строк), подставляя n=4, n=5 и т.д. Хотя есть индекс, и очевидно, что меньших n в таблице series не осталось.
Если добавить дополнительное условие "n <= 3", то запрос выполнится быстро. Можно ли ускорить выполнение запроса, не устанавливая такое жесткое ограничение?
Код:
CREATE TABLE series (
n INT PRIMARY KEY NOT NULL AUTO_INCREMENT
)
CREATE TABLE data (
dt_start DATETIME NOT NULL,
dt_end DATETIME NOT NULL
)
Код:
SELECT dt_start, dt_end, n FROM data, series
WHERE n <= DATEDIFF(dt_end, dt_start) + 1
Если добавить дополнительное условие "n <= 3", то запрос выполнится быстро. Можно ли ускорить выполнение запроса, не устанавливая такое жесткое ограничение?