DROP PROCEDURE IF EXISTS insertTUserStatement;
create procedure insertTUserStatement(IN num int)
begin
declare i int;
start transaction;
set i=0;
while i<num do
INSERT t_user_statement VALUES(NULL,FLOOR(1 + RAND() * (10)),1,FLOOR(100 + (RAND() * 99999)),0,1,1,NOW(),0,0);
set i=i+1;
end while;
commit;
end;
CALL insertTUserStatement(100000);
使用事务一次性提交,速度会快很多。10W条数据也才不到3秒,百万条不到30秒,模拟数据非常方便,九百万数据用时5分钟,9000万数据不建议直接插入,下班前插入,第二天上班还在插入,保守估计16个小时,建议使用千万级数据插入10次(不建议测试9000W数据,我在插入过程中,手动停止了,导致电脑磁盘读写一直100%)。
此表主键自增,所以未写回滚。
百万数据测试:一个代理商,所有下级代理共有五个(无线下级代理),该代理商的代理玩家(包括他的下级代理商的玩家)共66.8W数据,计算代理商玩家的花费流水总计。
测试结果:
关键字 | 是否使用冗余字段 | 是否使用索引 | 查询所用时间 |
---|---|---|---|
IN | 是 | 是 | 8.8s< |