我正在尝试围绕wordpress帖子的排名功能。
我有一个包含数千个帖子的自定义帖子类型。这些帖子中的每一个都有称为得分的元数据(数字)。我想根据得分值对所有这些帖子进行排名。因此post_id和score是我要寻找的两个值。帖子的排名位置将在我的网站的各个位置使用。
现在,什么是正确,最有效的方法呢?我是不是该:
只需获取所有post_id和分数,并将它们存储在数组中即可。按分数对数组排序,然后获取所需的postID在数组中的位置,即排名。
创建一个单独的表,用post_id和成绩集填充它,然后对该表进行排序。每次得分变化时,请更新此表。
创建一个单独的表,用post_id和分数集填充它并对该表进行排序。仅定期更新(例如每30分钟更新一次)以降低负载?
我需要的是在每个帖子中都显示得分,并且还需要一个使用排名数据的排名小部件。因此,如果数据始终是最新的(调整后的得分->排名更新),那就太好了。但是,如果这将给数据库/服务器带来沉重的负担,那么如果数据不是真正的最新数据,而是X分钟的旧数据,我也可以。
由于我对数据库还很陌生,所以很难弄清楚不同方法将产生什么负载。如果有人可以朝着正确的方向戳我,那将很棒。
最佳答案
由于排名不是静态过程,因此每次在表中插入或更新时都需要更新排名
我建议您在查询中处理该问题,例如:
SELECT @rownum:=@rownum + 1 as row_number,
t.*
FROM (
< your ordered query goes here >
) t,
(SELECT @rownum := 0) r
关于php - 什么是正确的和最有效的数据排名/排序方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19564712/