MySQL照片就像计数一样。如何存储&数百万喜欢的照片?

时间:2014-10-15 07:04:02

标签: php mysql sql

我正在尝试构建类似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。

思考?想法?提前致谢。

1 个答案:

答案 0 :(得分:3)

使用COUNT()功能:

SELECT COUNT(*) 
FROM photo_like_relation
WHERE photo_id = x

确保您在photo_id列上有一个索引,这应该非常有效。