Mysql索引(学习自用)

ops/2025/1/24 13:35:08/

目录

一、索引概述

 优缺点

二、索引结构 

1、索引数据结构

2、索引支持结构

3、B树

4、B+树

5、hash索引

6、为啥采用B+树索引

三、索引分类 

四、索引语法

五、索引性能分析

5.1查看执行频率

5.2慢查询日志

5.3profiling

5.4explain

六、索引使用规则

6.1验证索引效率

6.2最左前缀法则

6.3范围查询

 6.4索引失效的情况

6.4.1索引列运算

6.4.2字符串不加引号

6.4.3模糊查询

 6.4.4or连接的条件

6.4.5数据分布情况

6.4.5null情况

6.5索引建议、忽略、强制

6.6覆盖索引

6.7前缀索引

6.8单列索引和联合索引

七、索引设计原则


一、索引概述

 优缺点

二、索引结构 

1、索引数据结构

2、索引支持结构

3、B树

4、B+树

 

5、hash索引

6、为啥采用B+树索引

三、索引分类 

四、索引语法

五、索引性能分析

5.1查看执行频率

5.2慢查询日志

查看慢查询日志是否开启:

show variables like 'slow_query_log';

5.3profiling

查看profiling开启状态:

select @@profiling;

 

5.4explain

六、索引使用规则

6.1验证索引效率

用执行的秒数解释即可

6.2最左前缀法则

注意:跟联合索引的顺序没有关系,只要最左前缀存在即可。

explain select * from tb_user where profession='软件工程' and age=31 and status='0';

explain select * from tb_user where age=31 and status='0' and profession='软件工程';

是一样的效果。

6.3范围查询

注意:尽量使用>= 或<=来用范围查询,这样范围查询右侧的列索引不会失效。

 6.4索引失效的情况

6.4.1索引列运算

6.4.2字符串不加引号

6.4.3模糊查询

头部模糊匹配索引会失效

 6.4.4or连接的条件

有索引列 or 没索引列  整条语句的索引都失效。

若要解决则需都加上索引。

6.4.5数据分布情况

6.4.5null情况

当条件存在is not null或者is null情况时,不能准确判断是否利用索引了。要具体看数据内容。

6.5索引建议、忽略、强制

注意:

1)use只是建议mysql使用这种索引,并不是强制让mysql必须使用,具体使用哪个索引还要根据mysql哪个索引的执行效率高来进行选择。

2)ignore是忽略掉该索引。

3)force是强制mysql使用该索引。

6.6覆盖索引

6.7前缀索引

6.8单列索引和联合索引

七、索引设计原则


http://www.ppmy.cn/ops/152748.html

相关文章

HOW - 基于master的a分支和基于a的b分支合流问题

目录 背景&问题方案解决方式1. 直接将 master 合并到 b 分支2. 重建 b 分支&#xff08;如果冲突过多&#xff0c;建议此方式&#xff09;3. 使用 Git 的“ours”或“theirs”策略解决冲突 总结 背景&问题 我有一个master分支&#xff0c;然后基于此创建了一个a分支&am…

安卓动态设置Unity图形API

命令行方式 Unity图像api设置为自动,安卓动态设置Vulkan、OpenGLES Unity设置 安卓设置 创建自定义活动并将其设置为应用程序入口点。 在自定义活动中,覆盖字符串UnityPlayerActivity。updateunitycommandlineararguments (String cmdLine)方法。 在该方法中,将cmdLine…

mysql my.ini 配置参数结束

配置参数 #[client] #MySQL默认密码 #password88888888 [mysqld] #MySQL以什么用户运行 #usermysql #MySQL运行在哪个端口 #port3306 #改参数指定了安装MySQL的安装路径&#xff0c;填写全路径可以解决相对路径所造成的问题 #basedir #指定MySQL的数据库文件放在什么路径下 da…

【算法】经典博弈论问题——巴什博弈 python

目录 前言巴什博弈(Bash Game)小试牛刀PN分析实战检验总结 前言 博弈类问题大致分为&#xff1a; 公平组合游戏、非公平组合游戏&#xff08;绝大多数的棋类游戏&#xff09;和 反常游戏 巴什博弈(Bash Game) 一共有n颗石子&#xff0c;两个人轮流拿&#xff0c;每次可以拿1~m颗…

二叉树的所有路径(力扣257)

因为题目要求路径是从上到下的&#xff0c;所以最好采用前序遍历。这样可以保证按从上到下的顺序将节点的值存入一个路径数组中。另外&#xff0c;此题还有一个难点就是如何求得所有路径。为了解决这个问题&#xff0c;我们需要用到回溯。回溯和递归不分家&#xff0c;每递归一…

java ,springboot 对接支付宝支付,实现生成付款二维码,退款,查询订单状态等接口

查看文档 支付宝文档地址&#xff1a; 小程序文档 - 支付宝文档中心 使用沙箱环境 沙箱登录地址 登录 - 支付宝 点击查看 才能看钥匙截图写错了。。 问号可以看默认加密方式 点击沙箱帐号 这里我们就具备所有条件了 实战开始 pom文件增加依赖 <dependency> <gro…

Spring Boot 自动配置

目录 什么是自动配置&#xff1f; Spring 加载 Bean ComponentScan Import 导入类 导入 ImportSelector 接口的实现类 SpringBoot 原理分析 EnableAutoConfiguration Import(AutoConfigurationImportSelector.class) AutoConfigurationPackage SpringBoot 自动配置流…

探索Linux中的进程控制:从启动到退出的背后原理

个人主页&#xff1a;chian-ocean 文章专栏-Linux 前言&#xff1a; 进程控制是操作系统对进程的创建、运行、调度、中止等活动进行管理和协调的行为。它是操作系统中至关重要的一部分&#xff0c;保证多任务处理环境下的资源分配和系统稳定性。 进程创建 fork( ) fork() 调…