我正在尝试构建类似Instagram的应用,但我不确定如何计算每张照片的相同数量。
选项1:
user Table
- user_id
- username
...
photo Table
- photo_id
- user_id
- image_path
...
photo_like_relation Table
- like_id
- photo_id
- user_id
...
因此,通过此设置,我可以在计算查询结果后检索相同的计数。
"SELECT * from photo_like_relation WHERE photo_id = x"
选项2:
user Table
- user_id
- username
...
photo Table
- photo_id
- user_id
- image_path
- like_count **
...
photo_like_relation Table
- like_id
- photo_id
- user_id
...
使用选项2可以自我解释我将如何检索like_count但我觉得如果系统中有任何失误,这可能会变得混乱?可能photo_count总数与COUNT()总数的photo_like_relation可能不匹配?
那么哪种方法更好?还是有更好的方法?假设在应用程序中发布了数百万张照片/喜欢。
我正在尝试重新创建一个热门的页面功能,比如Instagram,它基本上可以抓住过去X分钟中最喜欢的照片。我觉得这对系统来说是一个巨大的负担,可以循环显示过去一小时发布的所有照片,并计算photo_like_relation表中存在多少条记录以及相应的photo_id。
思考?想法?提前致谢。
答案 0 :(得分:3)
使用COUNT()
功能:
SELECT COUNT(*)
FROM photo_like_relation
WHERE photo_id = x
确保您在photo_id
列上有一个索引,这应该非常有效。