0

我正试图围绕 wordpress 帖子的排名功能。

我有一个包含数千个帖子的自定义帖子类型。这些帖子中的每一篇都有称为分数(数字)的元数据。我想根据分值对所有这些帖子进行排名。因此 post_id 和 score 是我正在寻找的两个值。帖子的排名位置将在我网站的各个地方使用。

现在,正确和最有效的方法是什么?我是不是该:

  1. 只需获取所有 post_ids 和分数并将它们存储在一个数组中。按分数对数组进行排序,得到所需的 postID 在数组中的位置,即排名。

  2. 创建一个单独的表,用 post_id 和分数集填充它,然后对表进行排序。每次帖子和度假村中的分数发生变化时更新此表。

  3. 创建一个单独的表,用 post_id 和分数集填充它并对表进行排序。只定期更新(如每 30 分钟一次)以降低负载?

我需要的是在每个帖子中显示分数,并且还有一个排名小部件使用排名数据。因此,如果数据始终是最新的(调整后的分数 -> 排名更新),那就太好了。但是,如果这会在数据库/服务器上造成沉重的负载,那么如果数据不是最新的,而是 X 分钟前的数据,我也可以。

由于我对数据库还很陌生,我很难弄清楚不同方法会产生什么负载。如果有人能在正确的方向上戳我,那就太好了。

4

1 回答 1

1

由于排名不是静态过程,因此每次在您的表中插入或更新时都需要更新它我建议您在查询中处理它,例如:

SELECT @rownum:=@rownum + 1 as row_number, 
       t.*
FROM ( 
   < your ordered query goes here >
) t,
(SELECT @rownum := 0) r
于 2013-10-24T11:33:04.223 回答