MySQL хранит представление данных с течением времени, как ссылаться - PullRequest
0 голосов
/ 26 октября 2010

Таблица:

videoID (vidID, vidName, vidURL) и т. Д.

viewCount (vidID, views, timestamp)

Основная цель этой базы данных - вычислить наклон между самым последним видом и предыдущим.

Допустим, я автоматически сохраняю данные о просмотре в базе данных один раз в день.

Это означает, что все данные для просмотра всех видео находятся в одной большой таблице, которая называется viewCount. Представления связаны с соответствующим видео с помощью vidID. Это будет приемлемым решением? В основном, как я могу получить эти два значения, необходимые для расчета наклона для каждого видео из этой текущей базы данных?

1 Ответ

0 голосов
/ 26 октября 2010

почему вы не используете сводную таблицу («материализованное представление»), например следующую, в которой хранятся просмотры по годам и неделям. Вы можете изменить уровень детализации на любой, какой захотите - ежемесячно, ежедневно и т. Д. *

drop table if exists video_counts;
create table video_counts
(
year_id smallint unsigned not null,
week_id tinyint unsigned not null,
video_id int unsigned not null,
counter int unsigned not null default 0,
primary key (year_id, week_id, video_id) -- note clustered index (innodb only)
)
engine=innodb;

insert into video_counts (year_id, week_id, video_id, counter) values
(2010,1,1, 90), (2010,2,1, 80), (2010,3,1, 70),
(2010,1,2, 30), (2010,2,2, 50), (2010,3,2, 30);

update video_counts set 
  counter = counter + 1 
where 
  year_id = year(now()) and week_id = week(now()) and video_id = 1;
...