索引是为了加速数据的检索,但是不合理的表结构或适应不当则会起到反作用。我们在项目中就遇到过类似的问题,两个十万级别的数据表,在做连接查询的时候,查询时间达到了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已经做了相关优化,字符集不在影响索引)

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家

或 者关注我每天分享技术文章PHP架构师之路​www.zhihu.com

来源:https://www.cnblogs.com/tm2015/p/11310451.html

mysql没加引号导致全表扫描_mysql隐蔽的索引规则导致数据全表扫描相关推荐

  1. excel自动排班表_Excel数据分析-如何制作自动更新的数据透视表

    数据透视表是我们工作中一个非常强大的数据汇总分析功能,大家一定会遇到这样的问题,就是数据源如果每天或者经常性需要更新的话,那么我们的数据透视表就要在每次更新后重新选择数据源,如何能让数据源自动更新呢? ...

  2. jpa在自己创建表的是字段名不一致_用 数据透视表 完成 Excel多表合并

    一般情况下,数据透视表只能汇总一个表格中的数据.即使使用多区域汇总,也只能对多表的单列内容进行数据汇总,而多列却无法实现.前段时间也推送过Power Query的方法,但它有版本限制.而今天宏兴会计培 ...

  3. wps透视表列总计移到顶部_在数据透视表顶部显示总计

    wps透视表列总计移到顶部 In a pivot table, you can choose to show or hide the grand totals, but you can't chang ...

  4. mysql 唯一索引出现重复数据_mysql使用唯一索引避免插入重复数据

    使用MySQL 索引防止一个表中的一列或者多列产生重复值 一:介绍MYSQL唯一索引 如果要强烈使一列或多列具有唯一性,通常使用PRIMARY KEY约束. 但是,每个表只能有一个主键. 因此,如果使 ...

  5. excel 宏 数据透视表_宏从多个文件创建Excel数据透视表

    excel 宏 数据透视表 If you want to create a pivot table from data on different worksheets, you can use a M ...

  6. mysql行锁索引问题_Mysql锁机制--索引失效导致行锁变表锁

    =============== Tips:在阅读本文前,最好先阅读 这篇(Mysql锁机制--行锁)文章~ 在上篇文章中,我们看到InnoDB默认的行锁可以使得操作不同行时不会产生相互影响.不会阻塞, ...

  7. mysql创建备份表脚本_MySQL 备份脚本(单库/分库分表)

    MySQL数据库分库备份 数据库密码保存在/etc/my.cnf文件中,所以在执行与mysql相关的命令不需要输入密码 分库备份思路: mysqldump db1 >db1.sql.gz mys ...

  8. mysql存储过程 分表统计_mysql 存储过程:把昨天的数据找出来并保存到对应的月份分表...

    DELIMITER $$ CREATE PROCEDURE insertDataEveryday() BEGIN #把昨天的数据找出来插入到对应的月份分表 DECLARE v_tableName, v ...

  9. excel透视表无添加字段_为内部字段添加数据透视表小计

    excel透视表无添加字段 How was your weekend weather? We had a mini-blizzard yesterday, that covered the backy ...

最新文章

  1. MySQL 学习笔记(2)— 通配符/正则表达/运算符
  2. auve子表单中只读不好用
  3. 东农计算机应用与技术离线作业,东农16春《计算机应用与技术》在线作业.doc
  4. asp图片截图代码并且利用asp上传图片压缩
  5. 调研机构称明年全球数据中心基础设施支出将增长6%
  6. 0009:err:module:__wine_process_init failed to load xxx
  7. 飞鸽传书2007绿色版的发展
  8. ZKWeb网页框架2.1正式发布
  9. 从0开始学习 GITHUB 系列之「如何发现优秀的开源项目?」
  10. chainmaker VerifyingBlock height is not equal to proposed block
  11. 这就是神经网络 7:深度学习-目标检测-超详细图解Faster R-CNN
  12. 什么是拖库,撞库和洗库
  13. PR视频转场预设 10个快节奏极限运动空间扭曲效果PR转场过渡预设
  14. Android 网页无法打开 net:ERR_UNKNOWN_URL_SCHEME
  15. 【转】plt.plot的颜色
  16. PHP全国快递寄件接口,1天接入四通一达,极兔,宅急送,德邦,京东,天天
  17. C语言二维数组范德蒙,2、编写一个程序,实现一个3×4矩阵转置。
  18. 我劝你不要再留QQ邮箱了
  19. python你TM太皮了——区区30行代码就能记录键盘的一举一动
  20. windows 10中如何删除新加硬盘中系统分区和恢复分区

热门文章

  1. VSTO应用程序中加入键盘钩子
  2. linux 服务器进程,如何查看Linux服务器的进程
  3. guns企业高级单体版(前后端不分离)运行启动
  4. win10升级后chrome碰到对话框就卡死
  5. Spring与Struts框架整合
  6. mysql 跳表 b 树_简单谈谈Mysql索引与redis跳表
  7. docker 指定网卡_Docker | Docker技术基础梳理(五) Docker网络管理
  8. html城市绘制,HTML5/Canvas二分法构建城市版图
  9. java scanner_Java Scanner match()方法与示例
  10. c语言中将整数转换成字符串_在C语言中将ASCII字符串(char [])转换为十六进制字符串(char [])...