2010-07-25 62 views
1

有关查询/数据库性能问题:运行查询多次VS使用Cookie

我有记录多少个“点”的用户已经赚了表。每1点有1行。当有人获得20分时,将20行插入到数据库中。当有人失去20分时,我会在数据库中添加一个值为“-1”的行。因此,可以通过执行将这些点相加在一起的简单SELECT查询来计算某人拥有的点数。

潜在地,每个单独的用户可能有成千上万行来指示增加/丢失的点数,而我的数据库可能有成千上万的用户。

我需要在网站的“每个”页面上显示点数(针对登录的一个用户)。

问题是:在每次页面加载时执行此SELECT查询会损害数​​据库性能,还是运行查询一次,将值存储在Cookie中,并将Cookie显示在页面上更有效?我预测的唯一风险是,如果用户的浏览器不支持Cookies,并且Cookie始终更新为显示正确的值。

回答

0

每个页面加载的单个查询不会做太多,但是是一个cookie更高效,虽然不安全。您应该使用会话,以便用户不能更改数据。

1

这是一个相当便宜的操作。如果你有成千上万的用户在(userid,point)上有一个聚集索引,你可以加快查找速度。

虽然这是一个相当便宜的操作,但仍需要一些时间来执行额外的查询。如果你期望流量很高,另一种方法是将当前点存储在用户名旁边的列中的用户表中。我假设你为每个页面获取用户名,那么你几乎可以得到当前点自由。

可以保留点表以供参考,并获得关于为什么以及何时获得积分的详细信息。