Php 数据排序/排序的正确和最有效的方法是什么

Php 数据排序/排序的正确和最有效的方法是什么,php,mysql,database,wordpress,Php,Mysql,Database,Wordpress,我正试图对wordpress帖子的排名功能了如指掌 我有一个自定义的职位类型与数以千计的职位。这些帖子中的每一篇都有一个叫做分数的元数据,它是数字的。我想有一个所有这些职位的得分值的基础上排名。因此,post_id和score是我要寻找的两个值。职位的排名位置将在我的网站的各个地方使用 那么,什么才是正确和最有效的方法呢?我应该: 只需获取所有post_ID和分数,并将它们存储在一个数组中。按分数对数组排序,并获取所需postID在数组中的位置,即秩 创建一个单独的表,用post_id和分数集填

我正试图对wordpress帖子的排名功能了如指掌

我有一个自定义的职位类型与数以千计的职位。这些帖子中的每一篇都有一个叫做分数的元数据,它是数字的。我想有一个所有这些职位的得分值的基础上排名。因此,post_id和score是我要寻找的两个值。职位的排名位置将在我的网站的各个地方使用

那么,什么才是正确和最有效的方法呢?我应该:

只需获取所有post_ID和分数,并将它们存储在一个数组中。按分数对数组排序,并获取所需postID在数组中的位置,即秩

创建一个单独的表,用post_id和分数集填充它,然后对表进行排序。每次post和RESTOR中的分数更改时更新此表

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

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


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

因为排名不是静态的过程,所以每次插入或更新表时都需要更新排名 我建议您在查询中这样处理:

SELECT @rownum:=@rownum + 1 as row_number, 
       t.*
FROM ( 
   < your ordered query goes here >
) t,
(SELECT @rownum := 0) r

所以你建议我用postID和score集创建自己的表,然后每次在帖子或帖子中添加一个score时插入或更新?这是最好、最有效的方法吗?是的,您创建了一个名为post的表,对该表执行任何您喜欢的操作,例如insert或update,但是为了获得排名,您需要通过查询来处理该逻辑。那么,我是否正确理解了表本身没有排序?当我得到这些值时,我对得到的结果进行排序?这是对的吗?这里有一个很好的解释和例子:谢谢你的链接。它很好地解释了获得排名所需的查询,正如Sashi Kant已经说过的那样。但我的问题是,我是否需要为从wp_Posteta复制postID和分数的排名创建一个自己的表,还是可以使用Wordpress自己的表wp_Posteta进行此查询?