MySQL高级
2021/7/16 2:08:44
本文主要是介绍MySQL高级,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 索引
- 索引概述
- 索引的优劣势
- 索引的结构
- BTree结构
- B+Tree结构
- MySQL中的B+Tree结构
- ==为什么MySql索引使用B+树==
- ==hash比B+查找时间更短,为什么索引不用hash?==
- 索引分类
- 索引语法
- 创建索引
- 删除索引
- alter(修改)命令
- 索引的设计原则
- 视图
- 视图的概述
- 创建或修改视图
- 查看及删除视图
- 存储过程和存储函数【略】
- 存储过程和存储函数概述
- 触发器【略】
- 介绍
- MySQL的体系结构
- 存储引擎
- 存储引擎概述
- 各种存储引擎特性
索引
索引概述
索引的优劣势
索引的结构
BTree结构
-
B+树是在B树基础上改造的,他的数据都在叶子节点,同时叶子节点还加了指针。
-
每个节点的key是升序排列
一个例子
B+Tree结构
MySQL中的B+Tree结构
为什么MySql索引使用B+树
- 一般的树,一个节点可以有多个孩子,但一个节点只能存储一个元素,在元素非常多的时候,就使得要么树的度(节点拥有子树的个数的最大值)非常大,要么树的高度非常大,甚至两者都必须足够大才行。又因为索引是放在外存中的,查询这么庞大的树结构,使得IO操作(内存存取外存的次数)非常多,降低了性能;
- 然后是B树(多路查找树),其一个节点可以存储多个元素,这样可以
降低树的规模
,从未降低了IO操作次数,提高了查找速度,改善了性能;【我们不用红黑树,因为红黑树子节点只有两个,做到了树的平衡,但树的规模还是没B树限制的好】 - 但如果查询多条数据的话,B树需要做
局部的中序遍历
,由于B树的每个节点都存储数据,所以可能要跨层访问,这就意味着要在硬盘的页面之间进行多次访问【节点存储在不同的页面中】,降低了性能。而B+树由于所有数据都在叶子结点,不用跨层,同时由于有链表结构,只需要找到首尾,通过链表就能把所有数据取出来了。
hash比B+查找时间更短,为什么索引不用hash?
-
这和业务场景有关,如果只查找一个值的话,hash是一个很好的选择,但数据库经常会查多条,这时候由于B+树索引有序,并且又有链表相连,它的查询效率比hash就快很多了
【同样查询n条数据,hash需查n次,即O(n) ;
B+是O(log n):查询一次是O(log n),但查询一次后,由于B+树所有数据都在叶子结点,不用跨层,同时由于有链表结构,只需要找到首尾,通过链表就能把所有数据取出来了,不在花费时间】。 -
而且数据库中的索引一般是在磁盘上,数据量大的情况可能无法一次装入内存,B+树的设计可以允许数据分批加载,同时树的高度较低,提高查找效率。
索引分类
4)主键索引:某一个属性组能唯一标识一条记录;索引列的值必须唯一,且不能为null,主键索引只能有一个,唯一索引可能有多个
一个字段设置为主键后,数据库会自动为其建立主键索引
5)常规(普通)索引:
快速定位特定数据
索引语法
创建索引
###查看索引
删除索引
alter(修改)命令
索引的设计原则
视图
视图的概述
- 视图是为了简化我们的
查询
操作。
创建或修改视图
查看及删除视图
- 查看
- 删除
存储过程和存储函数【略】
存储过程和存储函数概述
触发器【略】
介绍
MySQL的体系结构
- 客户端发送一个连接后,就要到mysql的连接池中获取一个连接,来执行对应的请求。获取连接时,还需进行一些:认证、连接最大数、缓存等;
存储引擎
存储引擎概述
各种存储引擎特性
【在更。。。。。。。】
这篇关于MySQL高级的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-02MySQL 3主集群搭建
- 2024-12-25如何部署MySQL集群资料:新手入门教程
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解