加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

PHP随机排序的MySQL分页

发布时间:2021-08-28 05:09:09 所属栏目:大数据 来源: https://www.jb51.cc
导读:这是我网站上订购搜索结果的问题, 进行搜索时,内容页面上会显示随机结果,此页面也包含分页.我用户跟随我的SQL查询. SELECT * FROM table ORDER BY RAND() LIMIT 0,10; 所以我的问题是 我需要确保每次用户访问下一页时,他们已经看到的结果不再出现(在下一个查

这是我网站上订购搜索结果的问题,

进行搜索时,内容页面上会显示随机结果,此页面也包含分页.我用户跟随我的SQL查询.

SELECT * FROM table ORDER BY RAND() LIMIT 0,10;

所以我的问题是

>我需要确保每次用户访问下一页时,他们已经看到的结果不再出现(在下一个查询中排除它们,以内存有效的方式但仍按rand()排序)
>每次访问者访问第一页时都会有不同的结果集,是否可以使用此分页,或者排序始终是随机的.
>我可以在MysqL中使用种子,但是我不确定如何实际使用它…

解决方法:

MysqL中的随机排序是一个棘手的问题.在过去,我通常选择尽可能解决问题.通常,用户不会再回到这样的一组页面超过一次或两次.因此,这使您有机会避免所有各种令人作呕的随机顺序实现,而支持一些简单但不是100%随机的解决方案.

解决方案1

从已经编入索引的许多现有列中进行选择以进行排序.这可以包括创建,修改时间戳或您可以排序的任何其他列.当用户第一次访问该站点时,将这些方便地放入阵列中,随机选择一个,然后随机选择ASC或DESC.

在您的情况下,每次用户返回第1页时,选择新内容,将其存储在会话中.每个后续页面,您都可以使用该排序生成一致的分页集.

解决方案2

您可以使用其他列存储随机数进行排序.显然应该将其编入索引.定期运行以下查询;

UPDATE table SET rand_col = RAND();

这可能不适用于您的规范,因为您似乎要求每个用户在每次访问第1页时都会看到不同的内容.

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读