位置:首页 > 数据库 > MySQL
MySQL 高效率随机数据的的代码
日期:2023-01-03 人气:

大家好,对MySQL 高效率随机数据的的代码感兴趣的小伙伴,下面一起跟随三零脚本的小编来看看MySQL 高效率随机数据的的代码的例子吧。

从数据库中(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 条数据)。

---- 来自www.q3060.com
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_id>=sh2.share_id

其实随机产生数据,完全可以让他有根据的随机产生。这怎么讲?比如一篇文章,它有标题、标签、内容,可以提取权重很高的关键词,没篇文章都这么处理,用搜索引擎倒排序的方法,可以快速找到相同关键词的一类文章,然后在这些文章里,随机产生几条数据就是了。把大海捞针的活,变成了在浴池里捞个杂物,从大的范围,缩小到能掌控的范围,万事就变得简单啦!这也是一种思路,找不到很好的解决办法时,可以试试。

您可能感兴趣的文章