宣威做网站推广的公司,国外网站如何建设,哪个网站可以做化学实验,网页设计个人网站作业数据库中#xff08;mysql#xff09;随机获取几条数据很简单#xff0c;但是如果一个表的数据基数很大#xff0c;比如一千万#xff0c;从一千万中随机产生10条数据#xff0c;那就相当慢了#xff0c;如果同时一百个人访问网站#xff0c;处理这些个进程#xff0c…数据库中mysql随机获取几条数据很简单但是如果一个表的数据基数很大比如一千万从一千万中随机产生10条数据那就相当慢了如果同时一百个人访问网站处理这些个进程对于一般的服务器来说肯定是要死机的。
mysql数据库获取随机数据的函数rand()我建议轻易不要用这个我写博客的时候试了一下从16万数据里随机获取5条数据用时14.02秒这个耗费满惊人的。
SELECT * FROM t_share ORDER BY rand() LIMIT 5;
通过mysql最大值函数max()最小值min()来减小查询消耗
因为mysql数据的最大值和最小值的获取几乎是0消耗的数据库表数据与自身主键ID的集合做join查询是非常快速的。刚我也试了一下在16万数据的基数下随机产生5条数据几乎看不到时间消耗的。但是这种查询方法有一个缺点产生的数据ID都是连续的如果想不连续还要做循环执行才行每循环一次随机1条或2条数据。
SELECT sh1.* FROM fw_share AS sh1
JOIN
(SELECT ROUND(RAND() * ((SELECT MAX(share_id) FROM fw_share)-(SELECT MIN(share_id) FROM fw_share)) (SELECT MIN(share_id) FROM fw_share)) AS share_id
) AS sh2
WHERE sh1.share_idsh2.share_id