重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这个不难吧,我的思路是这样的,你先取出来全部的,然后进行读取,放到一个大数组里面,然后根据你给的百分比的数值可以计算出来,第一页和最后一页,数组里面有array_slice的函数,可以按你给的数值读取数据的多少,开始和结束位置,分页就像普通的分页程序一样写就可以了。
创新互联公司专注于企业成都营销网站建设、网站重做改版、淄博网站定制设计、自适应品牌网站建设、H5场景定制、商城网站定制开发、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为淄博等各大城市提供网站开发制作服务。
希望可以帮到你
什么叫抽取的更快?和什么比更快?你现在是怎么做的?
数据库性能是和很多因素有关的:
想要数据库响应的快,首先要有好的服务器。
如果数据库是在远程服务器上,还要有充足和流畅的带宽网络。
合理安排表的结构,建立索引。
针对你这个,800万条数据如果在一个表里,要有个整数型的ID作为主键,并做索引。如果数据是从不同的表里抽出来再组合起来的,表与表之间的链接键尽量用整数型并做索引。
然后生成10000个随机数,在ID里查找这1万个数字,取出对应的数据。
处理过程放到数据库端。
针对你这个,10000个随机数的生成函数用存储过程的形式存在服务器端。
随机排序,然后取前十条即可。
order by rand()
但需要注意的是效率并不高,在负载较重的环境下可能会造成问题。
祝好运,望采纳。
可以试试 select * from products,products_description where products.master_categories_id=67 and products.products_id=products_description.products_id order by rand(10) limit 20
这是随机抽取前20条,主要是用到 order by rand()
1.通过MYSQL内置的函数来操作,具体SQL代码如下:
SELECT * FROM tablename ORDER BY RAND() LIMIT 10
2.不要将大量的工作给数据库去做,这样会导致数据库在某一集中并发时间内锁死并阻塞。
建议通过PHP随机生成一下1-X(总行数)之间的数字,然后将这10个随机数字作为查询条件,具体语句如:
SELECT * FROM tablename where ID in (2,8,4,11,12,9,3,1,33)
可能你还要进行重复排除,并且需要在程序中将10个值串联并连接进入SQL语句中。
给你个思路吧,我就不写了
需要做2个查询
A是 查出 该商品出现的总次数
B个是 价格10的次数
A的 查询结果是
a 3
b 2
B的结果是
a 2
A left join B
在输出是 处理一下 null的情况
case when isnull( 次数) then 0 else 次数
最后 用concat 把字段拼接就可以了