精华内容
下载资源
问答
  • 以下的文章主要讲述的是MySQL随机查询数据MySQL随机更新数据的实际应用以及对MySQL随机查询数据MySQL随机更新数据的实际应用代码的描述,以下就是文章的主要内容描述,望你会有所收获。
  • 主要介绍了Python实现生成随机数据插入mysql数据库的方法,涉及Python随机字符串生成及数据库连接、插入等相关操作技巧,需要的朋友可以参考下
  • MySQL生成随机数据

    千次阅读 2019-11-26 20:49:57
    文章目录生成随机数生成随机整数生成使用md5加密的32位随机字符串生成随机3位浮点数生成随机3位整数生成指定敬意内的随机日期生成当天的随机时间 生成随机数 select rand()*100 ; 生成随机整数 select floor(rand...

    为数据库生成随机数据的网站

    生成随机{0,1}

    MySQL中bit类型的值为0或1,随机填充值:

    select floor(rand()*2);
    

    生成随机数

    • rand():生成的是0-1之间的随机数。
    • 生成[m,n]公式:RAND()*(n-m+1)+m

    示例:生成1到2之间的随机整数

    select floor(rand()*2+1) ;
    

    示例:生成0到100之间的随机浮点数

    select rand()*101 ;
    

    示例:生成[100,999]随机整数

    select floor(rand()*900+100) ;
    

    生成使用md5加密的32位随机字符串

    select Md5(floor(rand()*100)) ;
    

    生成随机字符串

    示例:生成随机的小写字母和数字组成的字符串

    select substring(md5(rand()),1,10);
    

    生成指定范围内的随机日期

    示例:生成2017-01-01到2019-08-08之间的随机日期

    
    select date(from_unixtime(unix_timestamp('2017-01-01') + floor( rand() * ( unix_timestamp('2019-08-08') - unix_timestamp('2017-01-01') + 1 ) ))) ;
    
    

    生成当天的随机时间

    select DATE_ADD(curdate(),  INTERVAL  FLOOR(1 + (RAND() * 86400))   SECOND );
    

    生成指定日期的随机时间

    update tb_blog set create_time=concat('2013-05-01 ', floor(rand()*24),':',floor(rand()*60),':',floor(rand()*60));
    
    展开全文
  • mysql中获取随机数据方法很简单只要使用order by rand()即可了,但是如果你是百万级数据量,使用order by rand()获取随机数据你会等死去,下面我来介绍具体的解决办法
  • MySQL 如何从表中取出随机数据  以前在群里讨论过这个问题,比较的有意思.mysql的语法真好玩. 他们原来都想用PHP的实现随机,但取出多条好像要进行两次以上查询. 翻了手册,找到了下面这个语句,可以完成任务了 ...
  • mysql随机获取n条数据

    千次阅读 2019-06-18 17:15:10
    这里使用mysql的随机数函数 RAND() ,随机生成一个0到1以内的数字。一般跟order by联合使用,能够影响排序,然后取前几条,达到随机取值的效果。 其中还用到了FLOOR(a)函数,取小于等于a的最大整数。 ROUND(a,b)...

    随机获取n条数据

    这里使用mysql的随机数函数 RAND() ,随机生成一个0到1以内的数字。一般跟order by联合使用,能够影响排序,然后取前几条,达到随机取值的效果。
    其中还用到了FLOOR(a)函数,取小于等于a的最大整数。
    ROUND(a,b)函数,对a四舍五入,保留b位小数点后的数
    本次测试 数据库一共11434条数据

    直接使用RAND函数

    SELECT * 
    FROM t_user_info ORDER BY RAND() limit 20 
    

    执行时间:0.085
    执行过程:
    在这里插入图片描述

    使用FLOOR函数和RAND函数

    SELECT * FROM t_user_info WHERE uid >= (
    	SELECT FLOOR(MAX(uid)*RAND()) FROM t_user_info
    	) ORDER BY uid LIMIT 20
    

    执行时间:3.407
    执行过程:
    在这里插入图片描述

    使用ROUND函数和RAND函数

    SELECT * 
    FROM t_user_info as t1 
    JOIN (
    	SELECT ROUND(RAND() * (SELECT MAX(uid) FROM t_user_info)) as uid
    ) as t2 
    WHERE t1.uid >= t2.uid
    ORDER BY t1.uid
    limit 20
    

    执行时间:0.032
    执行过程:
    在这里插入图片描述

    使用FLOOR函数和RAND函数(优化过后)

    SELECT * FROM t_user_info WHERE uid >= (
    	SELECT FLOOR(RAND() * (SELECT MAX(uid) FROM t_user_info)) 
    	) ORDER BY uid LIMIT 20
    

    执行时间:0.037
    执行过程:在这里插入图片描述

    记录

    EXPLAIN SELECT t1.uid
    FROM t_user_info as t1 
    JOIN (
    	SELECT ROUND(RAND() * (SELECT MAX(uid) FROM t_user_info)) as uid
    ) as t2 
    WHERE t1.uid >= t2.uid
    AND not EXISTS (SELECT * FROM t_follows WHERE t1.uid = t_follows.about_id AND t_follows.uid = 20165815  and t_follows.follow_type = 1 and t_follows.del = 0)
    ORDER BY t1.uid
    limit 20
    -- 0.032 0.032s   1  615  uid 8
    
    EXPLAIN
    SELECT t_user_info.uid FROM t_user_info WHERE uid >= (
    	SELECT FLOOR(RAND() * (SELECT MAX(uid) FROM t_user_info)) 
    	)
    AND not EXISTS (SELECT * FROM t_follows WHERE t_user_info.uid = t_follows.about_id AND t_follows.uid = 20165815  and t_follows.follow_type = 1 and t_follows.del = 0)
    
    ORDER BY uid LIMIT 20
    
    展开全文
  • 应用场景: 有时需要测试插入数据库的记录来测试,所以就非常需要用到这些脚本。...创建产生随机字符串的函数: set global log_bin_trust_function_creators = 1; DROP FUNCTION IF EXISTS rand_string; D
  • mysql中查询5条不重复的数据,使用以下: 代码如下:SELECT * FROM `table` ORDER BY RAND() LIMIT 5 就可以了。但是真正测试一下才发现这样效率非常低。一个15万余条的库,查询5条数据,居然要8秒以上搜索Google...
  • 这里我是直接使用mysql rand by函数来直接,几千条记录没关系,但如果到了几万条感觉要几秒,这个就很慢了,下面小编与大家一起来看看mysql随机数据慢优化过程。MySQL很多时候需要获取随机数据,举个例子,要从...
  • 思路:先随机排序然后再分组就好了。 1、创建表: CREATE TABLE `xdx_test` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `class` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=...
  • MySQL取出随机数据

    2020-09-14 14:47:46
    MySQL 如何从表中取出随机数据 以前在群里讨论过这个问题,比较的有意思.mysql的语法真好玩.
  • mysql插入千万条随机数据

    千次阅读 2017-06-14 12:42:48
    mysql千万级随机数据插入

    因为想测试sql在千万级数据下的优化,准备在自己的阿里云数据库插入一千万条数据,在网上搜了全是些乱七八糟的,于是就自己动手,同时也希望和大家分享,不足之处还请各位指教。

    一、建表

    1.创建部分表

    create table dept(
    id int unsigned primary key auto_increment,
    deptno mediumint unsigned not null default 0,
    dname varchar(20) not null default"",
    loc varchar(13) NOT NULL Default ""
    )engine=innodb default charset=utf8;
        为了使插入数据为正数,我是用来unsigned关键字修饰,字段分别为编号,部分编号,部门名称,位置
    

    2.创建员工表

    create table emp(
    id int unsigned primary key auto_increment,
    empno mediumint unsigned not null default 0,
    ename varchar(20) not null default"",
    job varchar(9) NOT NULL default "",
    mgr mediumint unsigned not null default 0,
    hiredate date not null,
    sal decimal(7,2) not null,
    comm decimal(7,2) not null,
    deptno mediumint unsigned not null default 0
    )engine=innodb default charset=utf8;
        员工表的各字段分别为编号,员工编号,员工姓名,工作,上级,雇佣时间,薪水,奖金,从属部门编号
    

    二、开启二进制函数功能

        我们的数据内容是随机的,所以要使用函数来产生随机的字符串和部门编号。mysql的二进制函数功能默认是关闭的,我们可以通过以下命令查询:
    
    show variables like 'log_bin_trust_function_creators';
    +---------------------------------+-------+
    | Variable_name                   | Value |
    +---------------------------------+-------+
    | log_bin_trust_function_creators | OFF   |
    +---------------------------------+-------+
    

    然后通过
    set global log_bin_trust_function_creators=1;
    将二进制函数功能开启
    我们再次查询,结果如下所示

    show variables like 'log_bin_trust_function_creators';
    +---------------------------------+-------+
    | Variable_name                   | Value |
    +---------------------------------+-------+
    | log_bin_trust_function_creators | ON    |
    +---------------------------------+-------+
    

    这样二进制函数功能就正常开启了,这个功能是本次有效,不过没必要一直开启,接下来我们就可以开始编写我们的函数了。

    三、编写随机函数

    1.随机产生字符串

    delimiter $$
    create function rand_string(n int) returns varchar(255)
    begin
    declare chars_str varchar(100) default 'abcdefghijklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ';
    declare return_str varchar(255) default '';
    declare i int default 0;
    while i<n do
    set return_str =concat(return_str,substring(chars_str,floor(1+rand()*52),1));
    set i=i+1;
    end while;
    return return_str;
    end 
    $$
        在这里说明下,为了避免;就导致命令提交,我用delimiter将提交的结束符改成$$
    

    2.随机产生部门编号

    delimiter $$
    create function rand_num() returns int(5)
    begin
    declare i int default 0;
    set i = floor(100+rand()*10);
    return i;
    end 
    $$

    四、创建存储过程

    1.部门表插入存储过程

    delimiter $$
    create procedure insert_dept(in start int(10),in max_num int(10))
    begin
    declare i int default 0;
    set autocommit = 0;
    repeat 
    set i=i+1;
    insert into dept (deptno,dname,loc) values((start+i),rand_string(10),rand_string(8));
    until i = max_num
    end repeat;
    commit;
    end $$

    2.员工表存储过程

    delimiter $$
    create procedure insert_emp(in start int(10),in max_num int(10))
    begin
    declare i int default 0;
    set autocommit = 0;
    repeat
    set i=i+1;
    insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)
    values((start+i),rand_string(6),'salesman',0001,curdate(),2000,400,rand_num());
    until i = max_num
    end repeat;
    commit;
    end 
    $$

    五、调用储存过程

    首先将提交符恢复为;
    delimiter ;
    1.插入10条部门数据
    call insert_dept(100,10);
    2.插入员工数据
    这里我先测试插入50万条数据
    call insert_emp (100001,500000);
    结果:Query OK, 0 rows affected (34.40 sec),用了34.4秒
    再次从员工编号5000001开始插入10000000条数据,
    call insert_emp (500001,10000000);
    结果:Query OK, 0 rows affected (11 min 25.66 sec)

    分析:随机数据的插入还是比较耗费性能的,耗时较长,通过比对两次插入员工表的时间可以看出,第二次插入每条的平均时间还小于第一次,以为两次都只进行了一次事务提交,所以平均下来,第二次插入的每条时间会比第一次少一点。好了,数据插入好之后,我们就可以开始我们的sql调优了

    展开全文
  • mysql-random-data-generator:这是最简单MySQL随机测试数据生成器工具。 加载过程并执行以自动检测列类型并加载数据
  • mysql中带了随机数据的函数,在mysql中我们会有rand()函数,很多朋友都会直接使用,如果几百条数据肯定没事,如果几万或百万时你会发现,直接使用是错误的。下面我来介绍随机数据一些优化方法。 SELECT * FROM...
  • mysql 随机分页的优化

    2019-12-04 10:16:57
    SET @a=(SELECT FLOOR(RAND() *(SELECT COUNT(*) FROM table_a)/10000)); # 取随机页 SELECT b.* FROM ( SELECT recordid FROM ( SELECT recordid FROM table_a LIMIT @a,10000 # 取随机页...

    SET @a=(SELECT FLOOR(RAND() *(SELECT COUNT(*) FROM table_a)/10000)); # 取随机页

    SELECT b.* 
    FROM 
    (
        SELECT recordid
        FROM 
        (
            SELECT recordid FROM table_a 
            LIMIT @a,10000 # 取随机页id,
            # 此处注意,limit 只能用常量,所以@a传递不了。只能和上面查询分别执行两次
        ) AS a 
        ORDER BY RAND()
        LIMIT 10 #页内二次随机
    ) a 
    JOIN table_a b #取数据
        ON a.recordid=b.recordid
    ;

    展开全文
  • 数据总量41万+ 方法一: 这种方法可以一次查询5条,执行速度455.596s SELECT*FROM`table`ORDERBYRAND()LIMIT5 方法二: 这种方法如果limit5的话将会是连续的五条,所以这里是limit1,为了实现目的可以...
  • MySQL随机获取数据以及效率

    千次阅读 2017-08-13 15:11:51
    近期在研究MySQL中语句的效率问题,今天主要来说下随机数据的语句 我现在主要以users(userId,userName,password......)表(有一百多万条记录)为例: 第一种: select * from users order by rand() ...
  • MySQL随机选取数据也是我们最常用的一种发发,其最简单的办法就是使用”ORDER BY RAND()”,本文介绍了包括ORDER BY RAND()的4种获取随机数据的方法,并分析了各自的优缺点。
  • mysql随机取出多条数据

    千次阅读 2018-01-18 16:52:16
    mysql随机数据,两种方法: 第一种:(速度最快!) SELECT * FROM level_test_page WHERE id >= ( ( SELECT MAX(id) FROM level_test_page
  • MYSQL随机读取一条数据

    千次阅读 2019-05-25 18:32:18
    项目上有个需求,需要在客户表中随机取一条数据,虽然不是我的活,但是也思考了一下,本来觉得挺简单的,大抵是使用rand函数之类的就可以搞定,但是查了查资料,还真是别有洞天。看了几篇博客,下面介绍几种方式: ...
  • mysql 随机查询几条数据 高效做法

    千次阅读 2019-05-03 09:05:31
    一、随机查询一条数据 方法一:SELECT*FROM`table`ORDERBYRAND() limit 1 评价:不建议使用,效率非常低,官方文档中进行说明:Order By和RAND()连用,会多次扫描表,导致速度变慢。 方法二:SELECT*FROM`table` ...
  • MySQL 随机获得一条数据的方法

    千次阅读 2019-12-20 15:26:28
    最近由于需要大概研究了一下MYSQL随机抽取实现方法。举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。       但是,...
  • MySQL随机取50条数据

    千次阅读 2019-11-12 16:44:39
    问题描述: MySQL从一张表怎么随机取50条数据? 解决方法: select * from table order by rand() limit 50;
  • 主要介绍了MySQL 处理重复数据的方法,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 127,856
精华内容 51,142
关键字:

mysql随机数据

mysql 订阅