试试下面的代码:
MySQL select 10 random rows from 600K rows fastORDER 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语句中。
'SELECT * FROM (SELECT * FROM tb ORDER BY id DESC LIMIT 1000)X ORDER BY RAND() LIMIT 10意思是在tb表内取1000条,再在其范围内取10条随机数组,避免了全表扫描,效率比单纯的ORDER BY RAND()快很多。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)