• mysql构建一张百万级别数据的表信息测试


    表信息:

    CREATE TABLE dept( /*部门表*/
    deptno MEDIUMINT   UNSIGNED  NOT NULL  DEFAULT 0,  /*编号*/
    dname VARCHAR(20)  NOT NULL  DEFAULT "", /*名称*/
    loc VARCHAR(13) NOT NULL DEFAULT "" /*地点*/
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
    
    
    CREATE TABLE emp
    (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=MyISAM DEFAULT CHARSET=utf8 ;
    
    CREATE TABLE salgrade
    (
    grade MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
    losal DECIMAL(17,2)  NOT NULL,
    hisal DECIMAL(17,2)  NOT NULL
    )ENGINE=MyISAM DEFAULT CHARSET=utf8;
    
    测试数据
    
    INSERT INTO salgrade VALUES (1,700,1200);
    INSERT INTO salgrade VALUES (2,1201,1400);
    INSERT INTO salgrade VALUES (3,1401,2000);
    INSERT INTO salgrade VALUES (4,2001,3000);
    INSERT INTO salgrade VALUES (5,3001,9999);
    

    为了存储过程能够正常执行,我们需要把命令执行结束符修改

    delimiter $$

    set global log_bin_trust_function_creators=TRUE;

    MySQL创建随机字符串函数:

    DROP FUNCTION IF EXISTS rand_string;
    DELIMITER $$
    CREATE FUNCTION rand_string(n INT)
    RETURNS VARCHAR(255)
    BEGIN
        DECLARE chars_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
        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()*62 ),1));
            SET i = i +1;
        END WHILE;
        RETURN return_str;
    END $$
    DELIMITER ;
    

     随机数函数:

    DELIMITER $$
    CREATE FUNCTION rand_num()
    RETURNS INT(5)
    BEGIN
    DECLARE i INT DEFAULT 0;
    SET i = FLOOR(10+RAND()*500);
    RETURN i;
    END $$
    DELIMITER ;
    

     存储过程:

    DELIMITER $$
    create procedure insert_emp(in start int(10),in max_num int(10))
    begin
    declare i int default 0; 
    #set autocommit =0 把autocommit设置成0
     set autocommit = 0;  
     repeat
     set i = i + 1;
     insert into emp values ((start+i) ,rand_string(6),'SALESMAN',0001,curdate(),2000,400,rand_num());
      until i = max_num
     end repeat;
       commit;
     end $$
    DELIMITER ;
    

     调用存储过程:

    call insert_emp(100001,10000000);
    

     wampserver中开启mysql慢查询:

    slow-query-log=On 
    ;linux中配置路径 
    ;slow_query_log_file=/data/mysql/log/mysql_slow_query.log 
    windows中配置路径 
    slow_query_log_file=E:mysql_slow_query.log 
    long_query_time=2 
    log_queries_not_using_indexes = ON
    
    第一句是开启慢查询 
    第二句是用来定义慢查询日志的路径 
    第三句是用来定义查过多少秒的查询算是慢查询,我这里定义的是2秒 
    第四句就是记录下没有使用索引的query
    
  • 相关阅读:
    hdu 1253
    poj 2531 Network Saboteur
    rwkj 1501 数据结构:图的DFS遍历
    rwkj 1306 素数========拓展
    nyist 91 阶乘之和
    nyist 65 另一种阶乘问题
    nyist 31 5个数求最值
    nyist 22 素数求和
    向量 vector
    字符串 统计 ,删除,连接,变换
  • 原文地址:https://www.cnblogs.com/mracale/p/9197759.html
Copyright © 2020-2023  润新知