У меня есть следующий запрос:
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, но производительность слишком низкая. Какое идеальное решение? Спасибо