Я пытаюсь выяснить, как это сделать наиболее эффективным способом, учитывая, что у меня большие таблицы.Как эффективно подсчитывать события на mysql
У меня есть две таблицы: photos
и favorites
(думаю, что-то вроде Flickr или Facebook :-).
Для каждой фотографии P я хочу подсчитать общее количество избранных создателем P, полученным на ее фотографиях, до того, как она выложила P. Другими словами, я хочу, чтобы количество избранных было отправлено до момента, когда она поделилась P.
В таблице photos
показаны столбцы: id
, user_id
, upload_timestamp
.
В таблицу favorites
включены столбцы: photo_id
, user_id
(пользователь favoriting), fave_timestamp
.
Результирующий набор должен иметь следующие столбцы: photo_id, user_id (creator of the photo), pre_faves_count
.
Таблица photos
имеет 2 миллиона записей. favorites
имеет 10 миллионов записей.
Я пытался сделать что-то вроде
select count(favorites)
FROM favorites, photos
WHERE favorites.photo_id
and photos.id
and favorites.fave_timestamp < photos.upload_timestamp
group by favorites.photo_id, favorites.user_id
- но я уверен, что это не правильно
Какие индексы у вас есть? –
У меня есть индексы на идентификаторе каждой таблицы. – amh
Я пробовал делать что-то вроде select count (избранное) FROM 'избранное',' photos' WHERE favorite.photo_id и photos.id и избранное.fave_timestamp
amh