当前位置: 首页 > 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字段


索引使用原则

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

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

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

范围查询(联合索引中的

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

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

索引列运算

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

字符串不加单引号

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

模糊查询

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

索引设计原则

相关文章:

  • Playwright 测试框架 - Python
  • 机器学习之深入理解机器学习常见算法:原理、公式与应用
  • Spring 中注入 Bean 有几种方式?
  • vue封装gsap自定义动画指令
  • 第三篇:MCP协议深度实践——从理论到生产级AI智能体系统
  • QRSuperResolutionNet:一种结构感知与识别增强的二维码图像超分辨率网络(附代码解析)
  • Markdown基础(1.2w字)
  • 实时通信RTC与传统直播的异同
  • 《波段操盘实战技法》速读笔记
  • 【QT】-信号传输数组跨线程段错误处理
  • VSCode主题设计大赛解析与实践指南
  • 数据结构与算法学习笔记(Acwing 提高课)----动态规划·树形DP
  • CSS 选择器全解析:分组选择器/嵌套选择器,从基础到高级
  • 【免费】酒店布草洗涤厂自动统计管理系统(1)——智能编程——仙盟创梦IDE
  • .NET 原生驾驭 AI 新基建实战系列(四):Qdrant ── 实时高效的向量搜索利器
  • 数据预处理的几种形式(转载)
  • 如何借助Hyper - V在Windows 10中构建安全软件测试环境
  • 高速PCB设计中圆弧布线是否必要
  • 还原Windows防火墙
  • Android studio初体验
  • 南阳做网站哪个好/营销方案设计思路
  • 长沙做网站建设公司/云南网络营销seo
  • 用psd做的买书网站/竞价代运营公司
  • wordpress单位内网做网站/优化系统
  • 盘县网站建设/天津做网站的网络公司
  • 全球做空现货黄金的网站/谷歌网址