我有一个mysql数据库,其中包含一个网站页面的条目。
假设它有如下字段:
Table pages:
id | title | content | date | author
每个页面都可以由用户投票,所以我还有另外两个表
Table users:
id | name | etc etc etc
Table votes:
id | id_user | id_page | vote
现在,我有一个页面,我显示了一个页面列表(每次10-50页),其中包含各种信息以及页面的平均投票数。
所以,我想知道最好:
a)运行查询以显示页面(注意,这已经相当繁重,因为它查询了三个表),然后对每个条目执行另一个查询以计算平均投票数(或向主查询添加第四个连接?)是的。
或
b)在pages表中添加一个“average vote”列,当用户对页面进行投票时,我将更新该列(与vote表一起)。
尼科
最佳答案
使用数据库了解它的用途;选项A是目前为止您的最佳选择。值得注意的是,您的查询实际上并不是特别繁重,它连接了三个表;sql在这方面非常擅长。
小心这种过早优化sql的尝试;sql的效率远远高于大多数人的想象。
注意,使用选项a的另一个好处是,要维护的代码更少,并且随着代码的更新,数据发散的可能性更小;这是一个生命周期的好处,而且它们常常被忽略,而无法获得极小的优化好处。
关于mysql - 我应该在数据库中复制数据吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4187367/