insert into 存一亿的数据

基础表上直接去存(没有改变表的引擎为innodb)

-- 创建存储过程
CREATE PROCEDURE test_insert()
BEGIN 
-- 定义一个属性
DECLARE i INT DEFAULT 0;
WHILE i<=100000000
DO
INSERT
m_user
(add_time,channel_code,is_stat,identification)
VALUES
('2021-12-08 13:48:41','宋佳豪',1,'zsn');
SET i=i+1; 
END WHILE; 
commit; 
END;
​
CALL test_insert();

看一下时间,我是醉了,等了我一天多还没跑完。我人傻了,决定不要再追这个爱情了。

所以我决定找原因了。

我用myIsAm引擎去存一亿数据试试看,我原来用的是innodb是因为事务的关系存起来会慢很多,查阅资料是mysiam没有事务存起来会极快,我试试!

USE test;
 DROP  TABLE  IF EXISTS test_user;
 CREATE TABLE  test_user(
 id BIGINT(20) PRIMARY KEY NOT NULL AUTO_INCREMENT,
 username VARCHAR(11) DEFAULT NULL,
 gender VARCHAR(2) DEFAULT NULL,
 passwords VARCHAR(100) DEFAULT NULL
 )ENGINE=MYISAM DEFAULT CHARSET=utf8;
​
-- 创建存储过程
CREATE PROCEDURE test_insertdemow()
BEGIN 
-- 定义一个属性
DECLARE i INT DEFAULT 0;
WHILE i<=100000000
DO
INSERT INTO test_user(username,gender,passwords) VALUES('宋佳豪','保密','751772898');
SET i=i+1; 
END WHILE; 
commit; 
END; 
​
CALL test_insertdemow();
​
​
​
​
​
                     

结果让我比较满意。一亿条数据50多分钟存完

舒服了舒服了。接下来把它的引擎先不改,我想先测试innodb这个引擎

#没有改变innodb引擎下 id主键索引         耗时  0.018s 
select id,username,passwords from test_user WHERE id =9999999;
​
#没有索引的查询                      耗时  9.022s
select id,username,passwords from test_user WHERE username='曾赛男';
​
#给username加上普通索引                  耗时  801.141s (有点久)
ALTER TABLE test_user add INDEX  index_name(username);
​
#username加上索引后再通过username去查    耗时  0.012s     (有索引和没有索引的区别显而易见了)#
select id,username,passwords from test_user WHERE username='曾赛男';
​
#将数据库的引擎改为innodb                耗时  315.159s
ALTER TABLE test_user engine=INNODB;
​
#改变innodb引擎下 id主键索引         耗时  0.016s 
select id,username,passwords from test_user WHERE id =9999999;
​
#innodb 引擎下    普通索引           耗时  0.013s
select id,username,passwords from test_user WHERE username='曾赛男';

我并没有测试出mysiam和innodb的一个差距比较,这里username加索引的效果倒是体现出来了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值