MySQL索引介绍
来源:互联网 发布:jenkins windows安装 编辑:程序博客网 时间:2024/06/05 18:53
什么是索引
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。由此可得到索引的本质是一种数据结构。
简单理解为:排好序的快速查找数据结构
一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上。
我们平常所说的索引,如果没有特别指明,一般都是指B树结构组织的索引(B+树索引)。
B+树索引检索原理
优缺点
优点:
1、类似图书馆书目索引,提高数据检索的效率,降低数据库的IO成本。
2、通过索引对数据进行排序,降低数据排序的成本,降低了CPU的消耗。
缺点:
1、实际上索引也是一张表,该表保存了主键、索引字段,并指向实体表的记录,所以索引也是要占空间的。
2、虽然索引大大提高了查询速度,但却降低了更新表的速度。如对表进行INSERT/UPDATE/DELETE操作时,mysql不仅要保存/更新数据,还要保存/更新索引,如果表数据更新太频繁可能导致因索引频繁更新带来的操作变慢,索引失效等问题。
3、索引只是提高查询速度的一个因素,需要花时间研究建立最优化索引
索引分类
单值索引
一个索引只包含单个列,一个表可以有多个单值索引
唯一索引
索引列的值必须唯一,但允许有空值。主键(PRIMARY KEY)默认是唯一索引
复合索引
一个索引可以包含多个列,高并发场景下倾向于创建复合索引
何时需要创建索引?
适合创建索引的情况:
1、主键自动创建唯一索引
2、频繁作为查询条件的字段应当创建索引
3、查询中与其他表关联的字段,即外键适合创建索引
4、查询中排序的字段适合创建索引。因为排序字段若通过索引去访问将大大提高排序速度
5、查询中统计或者分组的字段适合创建索引
不适合建立索引的情况:
1、频繁更新的字段,经常增删改的表,不适合创建索引
2、WHERE条件里用不到字段不适合创建索引
3、表记录太少的情况无需建立索引
4、如果某个数据列中包含许多重复的内容,为它建立索引就没有太大的实际效果
- MySQL中的索引介绍
- mysql索引介绍
- MySQL索引介绍
- MySQL索引详细介绍
- mysql 索引介绍
- MySQL索引类型介绍
- Mysql--基本索引介绍
- MySQL索引介绍
- MySQL索引介绍
- Mysql索引介绍
- MySQL索引介绍
- MySQL索引介绍
- MySQL索引介绍
- MYSQL索引分类介绍
- MySQL索引介绍
- MySQl索引介绍
- MySQL索引介绍
- mysql 索引介绍
- LeetCode 测试第一题
- mybatis实现延迟加载
- POJ2387Til the Cows Come Home(最短路问题Bellman-Ford解法)
- Thread常用方法
- 建议3 区别对待强制转型与as和is
- MySQL索引介绍
- freeline的使用
- 推荐一个学习mysql的网站
- jquery笔记-autocomplete
- C/C++十大经典算法之快速排序
- 建议4 TryParse比Parse好
- 堆排序
- 【unity3d-C#学习笔记】C#中的委托和事件
- Servlet的request获取前台json数据