MySQL索引初步
来源:互联网 发布:追梦格林常规赛数据 编辑:程序博客网 时间:2024/06/10 00:35
参考书籍:《高性能MySQL(第三版)》
索引对于数据库就像目录对于书籍。索引对良好的性能非常关键,尤其是当表中的数据越来越多的时候,索引对性能的影响愈发重要。索引优化对于优化查询来说是最重要的一个手段了, best索引比一个good索引能优化两个数量级的性能,由此可见一斑。
一、索引的类型
MySQL中的索引是在存储引擎层面实现的,因而没有统一的标准,这里忽略掉这些,只关心MySQL索引用到的数据类型。
1、B-Tree
在学习数据结构的时候,我们知道树这种数据结构经常会用来进行查询的操作,比如二叉树,平衡树,红黑树,还有b树,它可以把查询的时间复杂度优化到对数级别。
一般来说,索引本身也很大,不可能完全存放在内存中,所以一般是以索引文件的方式存储在磁盘中,因而,在进行索引查询的时候就会牵扯到磁盘的I/O,而对磁盘的I/O操作的时间远比内存操作要高几个数量级,所以要找一中能够有效减少磁盘I/O的数据结构,这就是多路查找树。
B-Tree的可以按照如下的定义:
1)树中每个节点至多有m个子节点
2)除根节点和叶节点之外,每个节点至少有m/2个子节点
3)所有叶节点都在同一层
4)每个非叶节点中包含n个关键字:
a)关键字是有序的
b)Pi是指向子树的指针,这个子树的所有关键字都小于Ki,但都大于Ki-1
c)关键字的个数在区间[m/2,m-1]
2、B+Tree
B+Tree是B-Tree的一个变种,也是MySQL中实际用到的一种数据结构,他们的区别在于:
1)有n棵子树的结点中含有n个关键字; (B-tree是n棵子树有n-1个关键字)
2)所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大的顺序链接。 (B-tree的叶子节点并没有包括全部需要查找的信息)
3)所有的非终端结点可以看成是索引部分,结点中仅含有其子树根结点中最大(或最小)关键字。 (B-tree的非终节点也包含需要查找的有效信息)
- MySQL索引初步
- mysql 之索引初步
- MySQL中的索引初步介绍
- MySQL的初步使用(4)——MySQL索引
- 索引的使用初步
- 分区索引初步理解
- SQL索引使用初步
- 孔浩Lucene索引初步
- Lucene---建立索引初步
- 位图索引初步
- MySQL初步
- MySQL 初步
- MySQL初步
- MYSQL初步
- MySQL初步
- 关于mysql 使用or连接索引失效引起的慢查询优化的初步实践
- lucene创建索引初步和搜索初步
- MySQL之初步MySQL
- C#winform用鼠标滚轮控制图片大小,MouseWheel事件
- windows eclipse PHP开发环境的搭建=Eclipse+Apache+php
- HTML表单
- 传递给Appium服务器以开启相应安卓Automation会话的Capabilities的几点说明
- android 设置系统屏幕亮度
- MySQL索引初步
- volley 学习
- #笔记#圣思园 JavaSE 第6讲——流程控制语句
- volist 、获取IP和事件以及分页功能
- Apache Log4j配置说明
- leetcode_96_Unique Binary Search Trees
- TextView高级应用之:实现部分文字点击事件
- c学习阶段总结
- Halcon运算符(总结的很全面)