MySql教程

MySQL高级

本文主要是介绍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高级的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!