mysql隐蔽的索引规则导致数据全表扫描
索引是为了加速数据的检索,但是不合理的表结构或适应不当则会起到反作用。我们在项目中就遇到过类似的问题,两个十万级别的数据表,在做连接查询的时候,查询时间达到了7000多秒还没有查出结果。
首先说明,关联的字段都已经建立了相对应的索引,在执行计划的时候发现另外一张表没有走索引,结果如下图:

具体描述为:Range checked for each record (index map: 0x1); Not exists
优化:
1、当然最直接的想法就是修改两个表的request_id字段的定义,改成相同即可。修改完成后,执行计划还是和没有修改的时候一样
2、由于两张表中的字段类型都是varchar类型的,所以猜测会存在字符集的问题,在Navicat中查看其排序规则不同

3、修改完成后,执行计划
关联查询走了索引,并且查询速度从之前的7000多秒没有查出结果变成了0.25秒出现了结果
结论:
1、表列类型,与where值类型不同会导致全表扫描。
例:phone char(11) select * from table where phone=12345678901;
2、join的两个表的字符编码不同,不能命中索引,会导致笛卡尔积的循环计算(mysql8.0已经做了相关优化,字符集不在影响索引)
mysql隐蔽的索引规则导致数据全表扫描的更多相关文章
- 索引法则--LIKE以%开头会导致索引失效进而转向全表扫描(使用覆盖索引解决)
Mysql 系列文章主页 =============== 1 准备数据 1.1 建表 DROP TABLE IF EXISTS staff; CREATE TABLE IF NOT EXISTS st ...
- 【翻译自mos文章】SYS_OP_C2C 导致的全表扫描(fts)/全索引扫描
SYS_OP_C2C 导致的全表扫描(fts)/全索引扫描 參考原文: SYS_OP_C2C Causing Full Table/Index Scans (Doc ID 732666.1) 适用于: ...
- SQL 数据优化索引建suo避免全表扫描
首先什么是全表扫描和索引扫描?全表扫描所有数据过一遍才能显示数据结果,索引扫描就是索引,只需要扫描一部分数据就可以得到结果.如果数据没建立索引. 无索引的情况下搜索数据的速度和占用内存就会比用索引的检 ...
- Mysql锁机制--索引失效导致行锁变表锁
Mysql 系列文章主页 =============== Tips:在阅读本文前,最好先阅读 这篇(Mysql锁机制--行锁)文章~ 在上篇文章中,我们看到InnoDB默认的行锁可以使得操作不同行时不 ...
- 陷阱~SQL全表扫描与聚集索引扫描
SqlServer中在查询时,我们为了优化性能,通常会为where条件的字段建立索引,如果条件比较固定还会建立组合索引,接下来,我们来看一下索引与查询的相关知识及相关陷阱. SQL表自动为主键加聚集索 ...
- [转载]会引起全表扫描的几种SQL
查询语句的时候尽量避免全表扫描,使用全扫描,索引扫描!会引起全表扫描的几种SQL如下 1.模糊查询效率很低: 原因:like本身效率就比较低,应该尽量避免查询条件使用like:对于like ‘%... ...
- 会引起全表扫描的几种SQL 以及sql优化 (转)
出处: 查询语句的时候尽量避免全表扫描,使用全扫描,索引扫描!会引起全表扫描的几种SQL如下 1.模糊查询效率很低: 原因:like本身效率就比较低,应该尽量避免查询条件使用like:对于like ‘ ...
- SELECT COUNT(*) 会造成全表扫描?回去等通知吧
本文已经收录到Github仓库,该仓库包含计算机基础.Java基础.多线程.JVM.数据库.Redis.Spring.Mybatis.SpringMVC.SpringBoot.分布式.微服务.设计模式 ...
- [SQL]会引起全表扫描的10种SQL语句
1.模糊查询效率很低: 原因:like本身效率就比较低,应该尽量避免查询条件使用like:对于like ‘%...%’(全模糊)这样的条件,是无法使用索引的,全表扫描自然效率很低:另外,由于匹配算法的 ...
- WHERE条件中or与union引起的全表扫描的问题
说起数据库的SQL语句执行效率的问题,就不得不提where条件语句中的or(逻辑或)引起的全表扫描问题,从而导致效率下降. 在以往绝大多数的资料中,大多数人的建议是使用 union 代替 or ,以解 ...
随机推荐
- LaTeX cleveref 宏包用法
介绍 cleveref 宏包是 LaTeX 中用于增强交叉引用功能的一个强大工具.它的主要特点是能够自动地按照不同元素的类型(如章节.图表等)生成格式化的引用,同时还支持定制引用格式,提供了比 LaT ...
- DigitalOcean Control (doctl) 使用方法
安装 macOS brew install doctl Ubuntu sudo snap install doctl # 授予 snap 应用额外权限 sudo snap connect doctl: ...
- windows docker(25.0.3) 运行 1.4.1 nacos 容器
Docker Desktop 设定图标 -> Docker Engine 设定国内镜像源 添加配置: { "builder": { "gc": { &qu ...
- 在一个简单的pwn题目中探究执行系统调用前堆栈的对齐问题
题目介绍:在输入AAAAAAAAAAAAAAAAAAAAAAAAA后,程序会打开一个shell,这是为什么?字符串中的A能否更换为@? 1.程序接收输入AAAAAAAAAAAAAAAAAAAAAAAA ...
- CEIT算法训练-双指针部分题解(全12题)
代码宏定义以及框架约定 #include <bits/stdc++.h> using namespace std; #define IOS ios_base::sync_with_stdi ...
- win10远程登录的账号密码
win10有了一个windows hello,还有本地账号,还有microsoft账号 在 设置-账户信息 这里可以设置登录一个 Microsoft账号,然后远程登录的时候,用的是 Microsoft ...
- DOM – Work with Document.styleSheets and JS/Scss Breakpoint Media Query
前言 为了方便管理, 我们会定义 CSS Variables, 类似于全局变量. 有时候做特效的时候还需要 JavaScript 配合, 这时就会希望 JavaScript 可以获取到 CSC Var ...
- [namespace hdk] 向量 direct_vector
我忏悔我有罪我心情又不好了不知道干什么所以又不小心封了个东西啊啊啊啊啊啊啊啊 功能 已重载 [] 运算符(左值) 已重载 = 运算符(可使用向量或 std:::vector) 已重载 + += - - ...
- .NEET跨平台绘图基础库--SkiaSharp
SkiaSharp 是一个跨平台的 2D 图形 API,用于 .NET 平台,基于 Google 的 Skia 图形库.它提供了全面的 2D API,可以在移动.服务器和桌面模型上渲染图像.SkiaS ...
- php7新内容总结(随时更新)
一.参数和返回值类型申明 可以申明的有:float,int,bool,string,interfaces,array,callable 一般模式: function sum(int ...$ints) ...