MySQL第10天:MySQL索引优化分析之索引介绍
MySQL索引优化分析之索引简介
1、索引是什么?
2、索引优势、劣势
3、索引分类、基本语法
4、索引结构
5、哪些情况需要创建索引?
6、哪些情况不需要创建索引?
---------------------------------------------------------------------------------------------------------------------
1、索引是什么?
(1)定义:索引(index)是帮助MySQL高效获取数据的数据结构,排好序的快速查找的数据结构。
(2)结论:1)索引的目的是提高查询效率,可以类比字典。2)在数据之外,数据库系统还维护着满足特定算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引(B tree 索引)。3)索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上。
注意:我们平常所说的索引都是指B树(多路搜索树,并不一定是二叉的)结构组织索引。其中聚集索引,次要索引,符合索引,前缀索引,唯一索引默认使用B+树索引,统称索引,除了B+树类型索引外还有哈希索引(hash index)。
2、索引优势、劣势
优势:
(1)类似图书馆书目索引,提高数据检索的效率,降低书库的IO成本;
(2)通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。
劣势:
(1)索引是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也占用空间。
(2)虽然索引提高了查询速度,但同时降低了更新表的速度,如对表进行INSERT、UPDATE、DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段,调整因更新带来的键值变化后的索引信息。
(3)索引只是提高效率的一个因素,如果你的MySQL有大量的表,就需要花事件研究建立优秀的索引或优化查询语句。
3、索引分类
分类:
(1)单值索引
一个索引只包含单个列,一个表可以有多个单列索引(建议一个表不超过5个索引)。
(2)唯一索引
索引列的值必须唯一,但允许有空值。
(3)符合索引
一个索引包含多个列
基本语法:
4、索引结构
(1)BTree索引
(2)Hash索引
(3)full-text索引
(4)R-Tree索引
BTree索引解索原理:
5、哪些情况需要创建索引?
6、哪些情况不需要创建索引?
总结
以上是生活随笔为你收集整理的MySQL第10天:MySQL索引优化分析之索引介绍的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: MySQL第9天:MySQL索引优化分析
- 下一篇: MySQL第11天:MySQL索引优化分