当前位置: 首页 > news >正文

MySQL索引(index)

索引的概述,作用及其优缺点

索引是一种有序的数据结构,用来高效获取数据的

假设查一张表中age为18的所有数据

无索引的情况,找到了age为18后还要继续扫描全表,看是否还有age是18的,这就是全表扫描,性能极差

有索引的情况,给age做一个二叉树,能快速找到

优缺点

每次更新表,同时也要更新索引


索引结构

一般说到的索引,没有明确指出,都是B+树结构的索引

二叉树、红黑树的缺点

B树

当一个节点存满5个数据时,中间数据向上裂变,剩余4个左右两两裂开。

数据结构动态演示网站

B+树

只有叶子节点存放数据,叶子节点形成了一个单项链表

 4阶:每个节点有最多有3个数据,最多指向4个节点

当一个节点存满4个数据时,中间数据向上复制裂变,数据左右裂开(向上裂变的数据也在),中间形成链表。

MySQL在B+树基础上叶子节点间形成了双向链表

hash索引的数据结构

 先hash计算每一行的hash值,确定要设置为索引的字段,该字段经过hash计算后,落到数组中对应的槽位,每个数组记录字段值和行hash值

索引的分类

根据索引的存储形式

聚集索引的叶子节点下挂的是这一行的数据

二级索引的叶子节点下挂的是对应的主键

回表索引:先走二级索引拿到对应的主键值,再走聚集索引,拿到对应的行数据


索引语法

创建索引

        中括号:唯一索引,全文索引,不写就是常规索引

        小括号里的是:表中的字段名,要为表中的哪个字段创建索引,一个索引可以关联多个字段的。关联一个索引叫单列索引,关联多个字段叫:联合索引/组合索引。注意写关联索引的小括号内,写顺序是有讲究的


SQL性能分析

为了做SQL优化。主要优化查询语句

SQL执行频率

确定当前数据库是以查询为主还是以增删改为主,增删改为主就没有必要SQL优化

模糊查询:7个下划线

慢查询日志

知道了要针对查询语句优化,但是具体要针对哪些select语句优化呢?就需要借助数据库慢查询日志,定位哪些select语句查询效率低,并针对优化

profile

比慢查询更全面,查看每一条sql语句耗时

explain执行计划

只看sql执行时间不能真正判断执行效率,性能

重点关注type字段


索引使用原则

最左前缀法则(针对联合索引

如果索引了多列(联合索引),要遵守最左前缀法则。
最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。
如果跳跃某一列,索引将部分失效(后面的字段索引失效)

要想使用联合索引,查询条件必须保证最左边的索引存在(不用一一对应),中间不能跳过某一列,如果跳过,后面索引失效。

范围查询(联合索引中的

复合索引中出现范围查询(<,>大于小于),范围查询条件右侧的列索引失效

如何规避?尽量使用大于等于 / 小于等于范围查询条件

索引列运算

在索引列中进行运算操作,会导致索引失效。

字符串不加单引号

字符串类型字段使用时,不加引号,索引会失效。

模糊查询

如果仅仅是尾部模糊匹配,索引不会失效。如果是头部模糊匹配,索引失效。

索引设计原则

http://www.xdnf.cn/news/862201.html

相关文章:

  • Mybatis入门到精通
  • Spark实战能力测评模拟题精析【模拟考】
  • 编程技能:格式化打印04,sprintf
  • Ubuntu 16.04 密码找回
  • 区块链安全攻防战:51% 攻击与 Sybil 攻击的应对策略
  • 目标检测任务的评估指标mAP50和mAP50-95
  • OpenCV计算机视觉实战(10)——形态学操作详解
  • 【从前端到后端导入excel文件实现批量导入-笔记模仿芋道源码的《系统管理-用户管理-导入-批量导入》】
  • 目标检测任务的评估指标P-R曲线
  • NPOI操作EXCEL文件 ——CAD C# 二次开发
  • LlamaIndex:解锁LLM潜力的数据编排利器
  • C++性能优化指南
  • Java Stream 高级实战:并行流、自定义收集器与性能优化
  • ODOO12
  • springboot--实战--大事件--文章分类接口开发详解
  • 微软的新系统Windows12未来有哪些新特性
  • 微软重磅发布Magentic UI,交互式AI Agent助手实测!
  • 使用Virtual Serial Port Driver+com2tcp(tcp2com)进行两台电脑的串口通讯
  • RT Thread平台下 基于N32G45x和N32L40x的drv_pwm驱动实现
  • PageHelper-分页插件
  • 【工具使用】STM32CubeMX-FreeRTOS操作系统-任务、延时、定时器篇
  • win11 连接共享打印机提示:错误0x00000709
  • Dify智能问数大模型Text2SQL流程编排从0到1完整过程
  • Python-正则表达式(re 模块)
  • 系统调试——ADB 工具
  • unix/linux,sudo,其内部结构机制
  • 几何绘图与三角函数计算应用
  • 五大主流大模型推理引擎深度解析:llama.cpp、vLLM、SGLang、DeepSpeed和Unsloth的终极选择指南
  • 多态(全)
  • 【动手学MCP从0到1】2.1 SDK介绍和第一个MCP创建的步骤详解