比如10条数据 我从数据库拿出来分页 分两页 打乱顺序
是10条数据打乱然后再分页
怎么处理呢?tp框架
从楼上的回答和你的疑问,我理解的是数据返回,需要乱序后展示,这个很简单拿到数据后数组乱序渲染,后边又说有可能一次10000条,这种乱序就会存在性能问题,所以我建议用图片懒加载方式获取数据,每页数据不会有太多乱序没问题。
如果问题是这样的,要从表中按照某一个条件查询数据,然后让记录按照随机的顺序返回。
那么,可以考虑采取这样的方法,在表中新建一个float类型的字段,名字比如叫rnd,并且给这个字段建立对应的索引。在记录保存时,给rnd写入一个随机数。在实际的应用查询返回结果时,根据rnd进行排序(比如order)。这样的话,查询效率是比较高,相当于把随机排序的计算转移到记录写入的时候,在使用查询结果时,已经是比较简单的查询了。
不考虑性能:
直接走数据库,mysql自带有随机的命令,在分页的时候加进去就可以了;
考虑性能:
取出来,放到nosql里面,比如redis,存到列表,有序集合都行,然后再用对应的l(z)range分页取就可以了。
10 回答11.1k 阅读
15 回答8.4k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
8 回答6.2k 阅读
2 回答2.6k 阅读✓ 已解决
个人觉得如果考虑性能的话,你一次性取20条出来打乱再分两页很麻烦,实际更直接的方法还是取一页10条出来打乱返回给用户比较好。
其实不从性能上考虑的话,从业务上考虑,主要是你查数据出来打乱分两页的目的是什么?是不是非要从20条里面打乱分两页?如果不是的话,还是建议一页取10条再打乱。