Mysql запрос даты между в большой таблице

Мой запрос выполняется около 10 секунд, и это неприемлемо.

Я ищу способ улучшить эту скорость, но у меня нет выбора. Я должен найти записи за период до 30 дней назад в таблице, содержащей более 12 миллионов строк.

Следующий запрос:

SELECT DATE(DATE) AS FDATE,
       SUM(VIEW_COUNT) AS COUNT,
       COUNT(IP_ADDRESS) AS CLIENTS
FROM VIEWS
WHERE USERID = 'test'
  AND DATE BETWEEN ADDDATE(CURDATE(), INTERVAL -30 DAY) AND CURDATE()
GROUP BY FDATE DESC

Я тоже пробовал, но тот же эффект:

SELECT DATE(DATE) AS FDATE,
       SUM(VIEW_COUNT) AS COUNT,
       COUNT(IP_ADDRESS) AS CLIENTS
FROM VIEWS
WHERE USERID = 'test'
  AND DATE >= (DATE(NOW() - INTERVAL 30 DAY) + INTERVAL 0 SECOND)
GROUP BY FDATE DESC

1 ответ

Решение

Вы можете попробовать использовать индексы MySQL для повышения производительности при уменьшении времени выполнения запроса.

http://dev.mysql.com/doc/refman/5.7/en/mysql-indexes.html

Другие вопросы по тегам