Оптимизация mysql запроса

Vadimka

Новичок
Оптимизация mysql запроса

есть 2 таблицы,
таблица фотографий - photo_album_fot pf
таблица просмотров фотографий - photo_album_fot_view pv
в таблице просмотров - 813К записей

выбираю топ по кол-ву просмотров за последние 5 дней,
запрос выполняется - 2 секунду :(
возможно ли оптимизировать данный запрос

SELECT pv.id, count( * ) AS COUNT, pv.idalbum, pf.sign, pf.typ
FROM photo_log.photo_album_fot_view pv, photo.photo_album_fot pf
WHERE pv.id=pf.i
AND pv.idalbum=pf.idalbum
AND pv.d8 >='20060712000000'
AND pv.idalbum NOT IN ('2746','3096','3142','2729','3326')
GROUP BY 1 ORDER BY 2 DESC LIMIT 4;

-~{}~ 18.07.06 00:14:

п.с.
за 5 дней 238К строк
# Query_time: 2 Lock_time: 0 Rows_sent: 4 Rows_examined: 238410
 

kos

Новичок
в таблицу с фотками дописываешь поле с количеством промотров и при заходе увеличиваешь его, сомое быстрое

по запросу, а зачем pv.idalbum=pf.idalbum ?
pv.id=pf.i должно быть достаточно, как расставил ключи и идексы
покажы полную структуру
 

fixxxer

К.О.
Партнер клуба
AND pv.d8 >='20060712000000'
это варчар чтоли? ужас.

вообще - топ лучше всего кэшировать.
 

Vadimka

Новичок
Автор оригинала: kos
в таблицу с фотками дописываешь поле с количеством промотров и при заходе увеличиваешь его, сомое быстрое

по запросу, а зачем pv.idalbum=pf.idalbum ?
pv.id=pf.i должно быть достаточно, как расставил ключи и идексы
покажы полную структуру
если при каждом просмотре увеличивать +1 просмотр, то получится общее кол-во просмотров за все время, а мне надо за 5,10 дней...

-~{}~ 18.07.06 09:00:

Автор оригинала: fixxxer
AND pv.d8 >='20060712000000'
это варчар чтоли? ужас.

вообще - топ лучше всего кэшировать.
да не варчар, а timestamp
 

4m@t!c

Александр
EXPLAIN запроса покажите? Дайте структуру двух таблиц?
Как вам уже сказали - вам нужно кешировать топ. Другой вопрос, что нужно продумать логику кеширования.
 
Сверху