Mysql Query для повышения производительности

У меня есть следующий запрос:

SELECT COUNT(sid),fDate,COUNT(DISTINCT(cid)) 
    FROM forwarding  
    WHERE fDate BETWEEN "2011-06-01" AND "2011-06-30" 
    GROUP BY fDate

Explain дает мне следующий результат:

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE  forwarding  index   fDate,fDate_2   fDate_2 3       1481127 Using where

Вы можете видеть, что данных много. общее рабочее время составляет 12 секунд. Как я могу улучшить производительность? Я не знаю, что еще можно сделать, установив индекс.

Вот мои индексы для этой таблицы:

fDate (fDate, f_shop)
fDate2(dDate),
f_shop(f_shop)

Спасибо за вашу помощь.

ОБНОВЛЕНИЕ:

Теперь я добавил столбец в свое предложение where, и запрос стал намного медленнее, чем раньше.

SELECT COUNT(sid),fDate,COUNT(DISTINCT(cid)) FROM forwarding 
WHERE fDate BETWEEN "2011-06-01" AND "2011-06-30"  AND f_shop=10077 GROUP BY fDate

У меня есть индекс на forwardDate и f_shop, но производительность слишком низкая. Какое идеальное решение? Спасибо

5
задан user954740 7 October 2011 в 15:24
поделиться