码迷,mamicode.com
首页 > 其他好文 > 详细

建立测试表和数据

时间:2019-08-06 20:06:01      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:ike   mysq   add   proc   测试表   data   datetime   情况   完全   

-- 建立源表
create table t_source  
(  
  item_id int,  
  created_time datetime,  
  modified_time datetime,  
  item_name varchar(20),  
  other varchar(20)  
);  

-- 建立目标表
create table t_target like t_source; 

-- 生成100万测试数据,其中有50万created_time和item_name重复
delimiter //      
create procedure sp_generate_data(http://www.amjmh.com)    
begin     
    set @i := 1;   
    
    while @i<=500000 do  
        set @created_time := date_add(‘2017-01-01‘,interval @i second);  
        set @modified_time := @created_time;  
        set @item_name := concat(‘a‘,@i);  
        insert into t_source  
        values (@i,@created_time,@modified_time,@item_name,‘other‘);  
        set @i:=@i+1;    
    end while;  
    commit;    
    
    set @last_insert_id := 500000;  
    insert into t_source  
    select item_id + @last_insert_id,  
           created_time,  
           date_add(modified_time,interval @last_insert_id second),  
           item_name,  
           ‘other‘   
      from t_source;  
    commit;
end     
//      
delimiter ;     
    
call sp_generate_data();  

-- 源表没有主键或唯一性约束,有可能存在两条完全一样的数据,所以再插入一条记录模拟这种情况。
insert into t_source select * from t_source where item_id=1;
        源表中有1000001条记录,去重后的目标表应该有500000条记录。

mysql> select count(*),count(distinct created_time,item_name) from t_source;
+----------+----------------------------------------+
| count(*) | count(distinct created_time,item_name) |
+----------+----------------------------------------+
|  1000001 |                                 500000 |
+----------+----------------------------------------+
1 row in set (1.92 sec)
---------------------

建立测试表和数据

标签:ike   mysq   add   proc   测试表   data   datetime   情况   完全   

原文地址:https://www.cnblogs.com/hyhy904/p/11311204.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!