【发布时间】:2014-06-03 03:55:50
【问题描述】:
有统一的内容,如论坛、新闻、文章等。内容由一个主题和它的cmet组成。用户写topic和cmets,需要对每个用户进行统计。
第一个想法——创建一个常规表users_stat,有user_id、forum_thread_count、forum_message_count、news_thread_count、news_message_count等字段。当论坛中出现新话题或发表评论时
UPDATE users_stat
SET forum_thread_count = forum_thread_count + 1
WHERE user_id = current_user_id.
但问题是可以添加新的section,然后我们需要做alter table with statistics,这不好。
也有这个想法。创建一个表 users_stat,其中包含字段 user_id、content (varchar 50)、counter。当论坛中出现新话题或发表评论时
UPDATE users_stat
SET counter = counter + 1
WHERE user_id = current_user_id
AND content = 'forum_thread'.
对于第一个主题的情况,当poster的users_stat表中没有记录时,对字段user_id和content做主索引,然后保存统计信息改为
INSERT INTO users_stat (user_id, content, counter)
VALUES (current_user_id, 'forum_thread', 1 )
ON DUPLICATE KEY UPDATE counter = VALUES (counter + 1).
但事实证明“插入”只工作一次,然后每次保存时,mysql都会分析整个表以搜索重复项。大量使用会降低性能。
谁能提出更多的想法?
【问题讨论】: