IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> MySQL高级(一) 索引 数据结构 -> 正文阅读

[数据结构与算法]MySQL高级(一) 索引 数据结构

1索引:

概念:帮助mysql高效获取数据的 !排好序! 的 数据结构 (key - value)

1.1数据结构

在这里插入图片描述

二叉树:BST树

? 如果1234567,跟链表一样,与全表扫描一样(二分查找:log(n))

平衡二叉树:AVL树

? 最短子树、最高子树 高度差 不能超过1

红黑树:BRT树

? 平衡树,但是大数据时层数太多,IO也是很多,最长路径不超过最短路径的2倍

B-Tree:

? 叶子节点没有指针,范围查找不友好

? 非叶子节点存储data和索引

B+Tree:

? 非叶子节点存冗余索引不存data,叶子节点存data和所有索引。多叉平衡树!从左到右递增。
? 叶节点:16kb、内存随机匹配 innodb_page_size
? B+树指针:双向链表
? 每个叶子节点限定索引个数max.Degree,所以能保证B+数层数3~4层
? B+树可以有很多个,但是有原始数据的B+树只有一个;其他普通索引的B+树存的主键值

hash表:

? 范围查找不合适;无序;InnoDB有hash索引,叫自适应hash

1.2索引分类

? 主键索引:不允许空值(mysql默认会为 主键、唯一键 创建索引)
? 唯一索引:允许空值
? 普通索引:既不是主键、又不是唯一
? 全文索引:luncene、solr
? 组合索引:多个列 (联合索引)

1.2.1联合索引(组合索引)

在这里插入图片描述

? 最左前缀:不能跳过前面的索引;因为联合索引,是根据name、age、position进行排序的。所以跳过name的话,直接查找age时,age是无序的,在name相同时,age才是有序的。

?

1.3索引相关概念

回表 :

根据普通列的索引的B+树查找,找到后根据key(主键),查找主键的带原始数据的B+树中查询。

索引覆盖:

select id,name ;name加索引 ,where name=“张三”。为了不回表

最左匹配:

省份、城市、城镇 。 优化器会调整顺序, 如:name age 索引,where age=? and name=?也可以匹配

索引下推:

name age索引
? 5.6之前:先根据name去存储引擎拿所有数据,然后在server层对age数据过滤
? 5.6之后:根据name,age两列直接获取数据
?

优化器:

? COB:基于成本的优化
? RBO:基于规则的优化

1.4索引匹配方式

? 全值匹配:
? 匹配最左前缀
? 匹配列前缀:like 'j%‘走索引,’%j’不走索引
? 匹配范围值:隐式转换(类型转换)导致索引失效 如:name>123 与 name>‘123’
? 精确匹配某一列并范围匹配另外一列:组合索引中间有范围查询时,导致后面的索引失效
? 只访问索引的查询
?

细节:

? 1、尽量不使用表达式、函数
? 2、尽量使用主键查询,因为主键索引不会回表查询,IO次数增加
? 3、使用前缀索引:适合比较长的字符串,节省索引空间大小
? 4、使用索引扫描来排序:
? 5、union all、in or
? 6、范围列可以用到索引
? 7、对经常修改的字段不要创建索引
? 8、删除不再使用或很少使用的索引
?

注意:

? 1>要遵循最左匹配原则
? 2>隐式转换导致索引失效,例如 字符串类型为数字时不添加引号
? 3>对索引进行运算导致索引失效(+ - * / !)
? 4>对于 not in, in, !=, not exist也会导致索引失效
? 5>对于like “%_” 百分号在前面也会导致索引失效
? 6>or,除非or条件上的字段都为索引,否则只能进行全表查询

? 在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章           查看所有文章
加:2021-07-25 00:01:44  更:2021-07-25 00:02:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 9:42:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计