首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mysql数据库设计?

mysql数据库设计?
EN

Stack Overflow用户
提问于 2009-08-24 20:53:45
回答 3查看 159关注 0票数 1

我有一个表,其中存储每个产品的用户的评级。该表由以下字段组成,productid、userid、rows (Out of 5)...This表将来可能包含一百万行.

因此,为了选择前5名产品,我使用以下查询::。

代码语言:javascript
运行
复制
SELECT productid, avg( rating ) as avg_rating
from product_ratingstblx245v
GROUP BY productid
ORDER BY avg( rating ) DESC
LIMIT 5

我的问题是,既然我将在我的网站的几页上显示这一结果,那么是否最好为productid、average、pages 字段的平均收视率保留一个单独的表?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-24 21:32:07

如果MySql不能以(子)毫秒的速度来处理像您上面这样的简单表模式的100多万条记录的查询,那么我真的很想知道为什么公司会在LOB应用程序中使用它。

事实上,我是一个MySql开发人员,所以我对MySql的能力不太了解。但是,假设它的数据库引擎与Sql服务器一样好(我已经听说了关于Sql的好消息),您就不必担心性能问题了。如果您确实想调整它,那么为什么不将结果缓存10分钟(或更长时间)到您的应用层呢?触发器通常是纯粹的(尽管有时是必要的)邪恶。Sql服务器是为要执行、信任Sql的查询类型而设计的。

票数 1
EN

Stack Overflow用户

发布于 2009-08-24 21:01:54

你还不需要那个问题的答案。您可以从视图开始,这是执行上述查询的结果。如果在执行负载测试(例如使用JMeter)之后,您看到站点运行得确实很慢,则可以使用临时表(存储在内存中)替换视图。由于视图和临时表从外部看起来是一样的,所以您不必更改业务逻辑。

票数 3
EN

Stack Overflow用户

发布于 2009-08-24 21:08:41

就我个人而言,我不喜欢这样计算总数,但如果有需要的话,我不会储存平均数,我会储存总票数和总评等。这样,这是一个非常简单的更新查询(将1添加到总票数,并将评级添加到总评等)。然后,您可以在最短的时间内计算平均时间。

至于你如何处理这件事,我会使用触发器,就像有人已经建议的那样。但只有在尝试了别人建议的观点之后。

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

https://stackoverflow.com/questions/1324712

复制
相关文章

相似问题

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