mysql随机打乱数组问题

比如10条数据 我从数据库拿出来分页 分两页 打乱顺序
是10条数据打乱然后再分页
怎么处理呢?tp框架

阅读 4.5k
7 个回答

个人觉得如果考虑性能的话,你一次性取20条出来打乱再分两页很麻烦,实际更直接的方法还是取一页10条出来打乱返回给用户比较好。
其实不从性能上考虑的话,从业务上考虑,主要是你查数据出来打乱分两页的目的是什么?是不是非要从20条里面打乱分两页?如果不是的话,还是建议一页取10条再打乱。

这是什么场景?

mysql自带的随机取数据的函数,取出来的数据本来就是乱的。何必再打乱

从楼上的回答和你的疑问,我理解的是数据返回,需要乱序后展示,这个很简单拿到数据后数组乱序渲染,后边又说有可能一次10000条,这种乱序就会存在性能问题,所以我建议用图片懒加载方式获取数据,每页数据不会有太多乱序没问题。

如果问题是这样的,要从表中按照某一个条件查询数据,然后让记录按照随机的顺序返回。

那么,可以考虑采取这样的方法,在表中新建一个float类型的字段,名字比如叫rnd,并且给这个字段建立对应的索引。在记录保存时,给rnd写入一个随机数。在实际的应用查询返回结果时,根据rnd进行排序(比如order)。这样的话,查询效率是比较高,相当于把随机排序的计算转移到记录写入的时候,在使用查询结果时,已经是比较简单的查询了。

我觉得这样做会好点,一次性取出大于10条的数据,然后组成一个数组,在从中抽取10条作为2页的分页这样性能应该是最好的

不考虑性能:
直接走数据库,mysql自带有随机的命令,在分页的时候加进去就可以了;
考虑性能:
取出来,放到nosql里面,比如redis,存到列表,有序集合都行,然后再用对应的l(z)range分页取就可以了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题