如何在php随机抽取mysql数据库里的一定数量的记录

这个问题困扰了我一段时间了,还好今天咨询老大把它给解决掉了
之前我知道的一种解决办法就是order by rand (),可这玩意谁用谁知道啊!如果数据量一旦大点,就慢的要死.

 

select * from `table` where `id`>(select rand()*(max(`id`)-min(`id`))+min(`id`) from `table`) limit 1;

#不过用子查询的话,速度太慢,可能是用不了索引
#还是得分开用两

select rand()*(max(`id`)-min(`id`))+min(`id`) from `table`; //round()
select * from `table` where `id`>@a limit 1;

 

 

参考mysql手册 http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html

 

php产生一个0-1的数:mt_rand()/mt_getrandmax() ;

 

==============================================

点缀娱乐 点缀娱乐 点缀娱乐 点缀娱乐 点缀娱乐 点缀娱乐 点缀娱乐 点缀娱乐 

==============================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值