本文已参与 周末学习计划,点击查看详情
这是我参与更文挑战的第6天,活动详情查看: 更文挑战
通过存储过程插入百万,千万数据,来对比使用索引和没使用索引的区别(普通索引)
创建表
可以看到这里创建的索引类型都是 BTREE
1 | sql复制代码-- ---------------------------- |
百万级数据
在这里我们使用存储过程直接往表里插入一百万条数据
1 | sql复制代码-- ------------ MYSQL8.0.17 插入百万数据 |
索引
先看看表里现在有多少条数据
不使用索引
1 | sql复制代码-- 查询时不使用缓存 |
使用索引
1 | sql复制代码-- 添加索引 |
可以看到在使用索引之后 这个查询简直是飞快,直接变成 1ms ,对比之前 656ms 的速度 👀
千万级数据
想要更快地插入可以修改引擎为MyISAM,使用jdbc等去批量插入,比如一次插入 5000 甚至更多就可以了。 在使用 innodb
时,可以将 autocommit
关闭,插入完数据再去建立索引(后知后觉🙃)。
下图是改用 MYISAM
后插入 100万 数据使用的时间。
1 | sql复制代码-- 调用上面的存储过程再插入900w条数据。 这里用了两个多小时 。。 |
通过SELECT count(*) FROM mall;
看到现在表里有1200万条数据
先简单介绍下 MySQL8
新特性的隐藏索引,一般创建索引比较耗时的(在数据量大的情况下),现在有了这个隐藏索引,我们测试起来就更方便了,实际应用中还可以避免误删索引。
1 | sql复制代码-- mysql8新特性之隐藏索引 |
接下来我们试试这个MYISAM
引擎下的查询耗时情况:
MYISAM
隐藏索引:
显示索引:
🛫
起飞!✔
Innodb下:
隐藏索引:
显示索引:
================ 简单测试结束 😄===================
可以看到使用索引和不使用索引的速度区别是非常大的!
索引的类型
- 主键索引
- 普通索引
- 唯一索引
- 组合索引
- 全文索引
- 空间索引
可以发现索引的类型是很多的,而且和这个存储引擎有关
下面介绍几个常见的存储引擎的索引特点😄
InnoDB 存储引擎的索引特点
Index Class | Index Type | Stores NULL VALUES | Permits Multiple NULL Values | IS NULL Scan Type | IS NOT NULL Scan Type |
---|---|---|---|---|---|
Primary key | BTREE |
No | No | N/A | N/A |
Unique | BTREE |
Yes | Yes | Index | Index |
Key | BTREE |
Yes | Yes | Index | Index |
FULLTEXT |
N/A | Yes | Yes | Table | Table |
MyISAM 存储引擎的索引特点
Index Class | Index Type | Stores NULL VALUES | Permits Multiple NULL Values | IS NULL Scan Type | IS NOT NULL Scan Type |
---|---|---|---|---|---|
Primary key | BTREE |
No | No | N/A | N/A |
Unique | BTREE |
Yes | Yes | Index | Index |
Key | BTREE |
Yes | Yes | Index | Index |
FULLTEXT |
N/A | Yes | Yes | Table | Table |
SPATIAL |
N/A | No | No | N/A | N/A |
Memory 存储引擎的索引特点
Index Class | Index Type | Stores NULL VALUES | Permits Multiple NULL Values | IS NULL Scan Type | IS NOT NULL Scan Type |
---|---|---|---|---|---|
Primary key | BTREE |
No | No | N/A | N/A |
Unique | BTREE |
Yes | Yes | Index | Index |
Key | BTREE |
Yes | Yes | Index | Index |
Primary key | HASH |
No | No | N/A | N/A |
Unique | HASH |
Yes | Yes | Index | Index |
Key | HASH |
Yes | Yes | Index | Index |
欢迎关注,交个朋友呀!! ( •̀ ω •́ )y
嘿嘿,我是4ye 咱们下期…… 很快再见!😄
如果你觉得本篇文章对你有所帮助的话,那拜托再点点赞支持一下呀😝
让我们开始这一场意外的相遇吧!~
欢迎留言!谢谢支持!ヾ(≧▽≦*)o 冲冲冲!!
本文转载自: 掘金