Медленный MySQL-запрос на большой таблице с GROUP BY, AVG и т. Д.

У меня запрос к большой таблице (более 2 миллионов строк), выполнение которой занимает ~10 секунд. Есть ли способ оптимизировать его? Запрос, как показано ниже:

SELECT
    DATE_FORMAT(date0, '%Y-%m' ) AS Yr_Mo, 
    DATE_FORMAT(date0, '%p' ) AS AM_PM,
    province AS Province,
    SUM( IF( top_ads + left_ads =0, 1, 0 ) ) AS pagesWithRightAdsOnly, 
    AVG( top_ads ) AS top_ads, 
    AVG( left_ads ) AS left_ads, 
    AVG( right_ads ) AS right_ads
FROM ad_counts
GROUP BY Yr_Mo, AM_PM, Province

Таблица ad_counts:

date0 (timestamp)
province(varchar)
keyword_id
number_ads(int)
top_ads (int)
left_ads (int)
right_ads (int)

Индекс по дате0, но дата0 не уникальна.

Какие-нибудь мысли?

Редактировать: Объяснить:

id select_type тип таблицы возможных_ключей ключ key_len ref строки Дополнительно
1   SIMPLE  baidu_pro_ad_counts ALL NULL    NULL    NULL    NULL    2160752 Использование временного; Использование сортировки файлов

0 ответов

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