当前位置:网站首页>MySQl进阶之索引结构
MySQl进阶之索引结构
2022-08-11 05:33:00 【DoublePeach-】
MySQL默认采用InnoDB引擎,而InnoDB引擎下创建的索引默认为B+树结构)
- 能否使用二叉树和红黑树作为索引结构:
答:不能,因为二叉树和红黑树(本质是自平衡二叉树)都有一个共同的特点:
- 大数据量情况下,层级较深,检索速度慢。
所以不采用以上的二叉树作为索引结构
以下为b树的结构:
*b树的特点:
*注:树的度数指的是一个节点的子节点的个数
//以下网站是一个数据结构可视化的网站,能帮助理解复杂的数据结构是怎么实现的Data Structure Visualization
标准的b+树结构以下为:
- 相对于b树,b+树的数据都存储在了最下面的叶子节点上,上面的节点都只起索引的作用
*b+树特点:
以下为MySQL优化后的b+树结构:
以下为Hash索引的结构
*Hash索引的特点
A. Hash索引只能用于对等比较(=,in),不支持范围查询(between,>,< ,...)
B. 无法利用索引完成排序操作
C. 查询效率高,通常(不存在hash冲突的情况)只需要一次检索就可以了,效率通常要高于B+tree索引
——————————————————————————————————————————
常使用的索引结构:
- B+树索引——大部分引擎都支持
- Hsah索引——哈希表实现,不支持范围查询和排序,只能精确匹配索引列。仅支持Memory引擎。
问:为什么InnoDB存储引擎选择使用B+tree索引结构?
A. 相对于二叉树,层级更少,搜索效率高;
B. 对于B-tree,无论是叶子节点还是非叶子节点,都会保存数据,这样导致一页中存储的键值减少,指针跟着减少,要同样保存大量数据,就只能增加树的高度,导致性能降低;
C. 相对Hash索引,B+tree支持范围匹配及排序操作;
———————————————————————————————————————————
以下是InnoDB中的聚集索引和二级索引的结构图:
- id是主键,主键索引即聚集索引 生成的b+树的叶子节点下挂着该行的行数据
- name非聚集索引,即二级索引,索引对应的b+树的叶子节点下挂着name对应的该行主键id
以下以一个查询SQL来演示二级索引与聚集索引的回表查询:
索引的使用:
边栏推荐
- VMware workstation 16 安装与配置
- HPC platform building
- 无胁科技-TVD每日漏洞情报-2022-7-21
- Login error in mysql: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)ERROR
- SECURITY DAY05 (Kali system, scanning and caught, SSH basic protection, service SECURITY)
- 项目笔记——随记
- 文本三剑客——sed 修改、替换
- buildroot嵌入式文件系统中vi显示行号
- C语言两百题(0基础持续更新)(1~5)
- Threatless Technology-TVD Daily Vulnerability Intelligence-2022-8-3
猜你喜欢
ramdisk实践1:将根文件系统集成到内核中
CLUSTER DAY01 (Introduction to cluster and LVS, LVS-NAT cluster, LVS-DR cluster)
ssh中的密码登录和密钥登录
SSL证书部署后,为什么还是显示不安全?
SECURITY DAY06( iptables防火墙 、 filter表控制 、 扩展匹配、nat表典型应用 )
lvm 多盘挂载,合并使用
mysql数据库安装教程(超级超级详细)
AUTOMATION DAY07( Ansible Vault 、 普通用户使用ansible)
Project Notes - Random 2
ETCD集群故障应急恢复-从snapshot恢复
随机推荐
分页查询模型
buildroot setup dhcp
SECURITY DAY04( Prometheus服务器 、 Prometheus被监控端 、 Grafana 、 监控数据库)
Vulnhub靶机--born2root
IP证书申请
CLUSTER DAY02( Keepalived热备 、 Keepalived+LVS 、 HAProxy服务器 )
SECURITY DAY02( Zabbix报警机制 、 Zabbix进阶操作 、 监控案例)
visio文件批量转pdf
无胁科技-TVD每日漏洞情报-2022-8-6
GoAhead Server 环境变量注入(CVE-2021-42342)漏洞复现
日志收集分析器(ELK)
mysql 中登录报错:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)ERROR
中国移动通信集团有限公司:业务委托书
(二)软件测试理论(*重点用例方法编写)
Basic use of Slurm
Apache APISIX 默认密钥漏洞复现
无胁科技-TVD每日漏洞情报-2022-7-25
使用路由器DDNS功能+动态公网IP实现外网访问(花生壳)
软件使用代码签名证书的好处和必要性
Threatless Technology-TVD Daily Vulnerability Intelligence-2022-8-5