首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最好的方式来存储数据,如餐厅签到计数?

问最好的方式来存储数据,如餐厅签到计数?
EN

Stack Overflow用户
提问于 2016-05-13 05:16:21
回答 2查看 74关注 0票数 0

我有一个显示餐厅概要数据的页面,其中一个显示的数据是该餐厅的用户签到总数

我有一个mysql表,比如:user_checkins,它存储用户到餐厅的签到信息,比如:

代码语言:javascript
复制
id | user_id | res_id | checkin_date        |
 1 |     102 | 5526   | 2016-04-21 03:20:21 |
 2 |     165 | 5574   | 2016-04-21 06:35:21 |
 3 |     102 | 4565   | 2016-04-24 02:15:30 |

和另一个表res_checkin_count

代码语言:javascript
复制
id | res_id | total_checkin_count |
 1 |   5526 | 1055                |

一段时间后,将在user_checkins中创建许多行,因为人们频繁地签入

问:我应该删除旧的行吗?比如创建一个cronjob,定期(如每天)删除reach餐厅的旧行,并在另一个只存储每个餐厅的total_checkin_count的mysql表中更新餐厅的total_checkin_count编号?这会消耗大量内存吗?

或

我保留行,让它累积,并使用SELECT COUNT(*) all来获取每个餐厅的total_checkin_count

编辑:user_checkins表实际上存储了不同餐厅的所有用户签到,每次有人访问'restaurant_profile‘网页时,SELECT COUNT(*)查询将在res_id x的user_checkins表上运行,以获取该餐厅的total checkin count,这是多余的吗?

EN

回答 2

Stack Overflow用户

发布于 2016-05-13 05:33:57

当您说很多行时,您需要评估是否有很多行超出了MySQL的能力。一般而言,MySQL应该能够轻松地处理每个表1亿行的数据。您是否期望在不久的将来超过1亿行?如果不是,那就不要去管你的数据,这会降低存档系统的复杂性。

另一方面,如果您希望表中的行数超过数亿行,那么是的,运行每日作业来删除或归档您的数据有助于保持数据库的良好运行。

票数 0
EN

Stack Overflow用户

发布于 2016-05-13 05:34:01

在我看来,这些表是在MySQL中的,但是我会去掉res_checkin_count是一个聚合函数的副本,它是一个计数,所以你在浪费内存,所以只能有两种情况:

1您的user_checkins表没有超过200万条记录,并且您为列res_id创建了nuncluster索引,这样就可以了。

2你有一个巨大的网站,你在其中存储了超过200万条活动记录,并且你为每个州或每个砖块(3到5个邮政编码)创建了表,这样你就有了分布的记录,最有可能的是人们从TX搜索和查询TX上的餐厅,等等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37197532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档