2013-02-01 15 views
1

我的工作页面上的文章。我们可以对每篇文章进行投票。我想在不同的页面上显示所有文章和高于平均水平的投票文章。我目前的情况是这样的:保持变量PHP的状态,而无需查询

//For get all articles 
GET ALL RECORDS FROM ARTICLES TABLE 

//For above average articles 
GET ALL RECORDS WITH VOTE ABOVE 
    GET AVERAGE VOTE VALUE FROM ARTICLES TABLE 
FROM ARTICLES TABLE 

我发现非常低效。有哪些变化平均投票两个事件:

  • 有人表决的文章
  • 有人写了一篇文章

有什么办法,我可以跟踪平均投票值,而不在每次请求查询数据库?我想我必须保存已经发送了多少票以及写了多少文章的状态。我应该用档案写下这两个增值税,这是否安全?

+0

我会保持一个总和,并在两个单独的列作为denormalisation步数;那么平均数是微不足道的。 –

回答

1

只需使用你的数据库如预期,这是有效,因为你会得到什么。如果你想减少对超过使用缓存(Choosing a PHP caching technique: output caching into files vs. opcode caching)数据库流量,不重新设计一些作品,并添加不必要的复杂性。

PHP不具有的请求之间持久的静态变量,这使得一个明显的/简单的解决问题的方法(你真的没有问题,但是你认为低效率)是不可能的。变量序列化到一个文件,并具有读取该文件的每个请求是不是要走的路,文件系统IO是最有效的结构。