msyq类型类转换造成索引失效

       今天碰到一个慢sql的问题,sql明明按照最前缀的原则写的,但是索引就是不生效,最终排查发现是因为索引字段发生类型转换造成的。

一、表结构

1、表字段

 2、表索引

二、问题sql 

EXPLAIN
SELECT	* FROM  t_res
WHERE  open = 1 AND res_date > CURRENT_DATE() AND res_date <= DATE_ADD( NOW(), INTERVAL 3 DAY)   AND is_del = 1 
GROUP BY dept_code

       这个sql语句如果不出意外会使用open_date_index索引,然而执行sql计划确令人大失所望

       通过sql计划可以看出,索引失效了,只是做了全表范围查询,那么这里会不会是mysql优化器优化了查询sql,我有尝试强制使用索引,

EXPLAIN
SELECT	* FROM  t_res  FORCE INDEX(open_date_index)
WHERE  open = 1 AND res_date > CURRENT_DATE() AND res_date <= DATE_ADD( NOW(), INTERVAL 3 DAY)   AND is_del = 1 
GROUP BY dept_code

       再次执行计划,索引依然没有生效,到此可以很明确索引失效了;

三、解决索引失效

        我仔细分析了下表结构,发现open和res_date字段是varchar类型的,而在sql查询的时候使用的类型不一致,其中open=1,会在查询的时候将数据库的open由字符类型转换为数值类型,res_date > CURRENT_DATE()会将res_date的字符类型转化日期类型,这中强制类型转换是索引的天敌,找到原因后,sql做下微调

EXPLAIN
SELECT*
FROMt_resFORCE INDEX(open_date_index)
WHEREopen = '1'AND res_date > DATE_FORMAT(CURRENT_DATE(),"%Y-%m-%d")AND res_date <=DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 3 DAY),"%Y-%m-%d")AND is_del= '1'
GROUP BYdept_code

      执行计划

        这次 open_date_index索引生效,问题得到解决

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/768718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯day12刷题日记

P8720 [蓝桥杯 2020 省 B2] 平面切分 思路&#xff1a;首先借用dalao的图解释一下&#xff0c;又多出一条与当前平面任意一条直线都不重合线时&#xff0c;多了的平面是交点数1&#xff0c;所以用双层循环每次往里面加一条直线&#xff0c;计算交点 #include <iostream>…

Ubuntu Desktop - Updates (不升级到新版本)

Ubuntu Desktop - Updates [不升级到新版本] 1. UpdatesReferences 1. Updates System Settings -> Software & Updates -> Updates ubuntu-16.04.3-desktop-amd64.iso 不升级到新版本 ​ References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

TypeScript 常见的面试题

文章目录 1. 什么是TypeScript2. 类型声明和类型推断的区别&#xff0c;并举例应用3. 什么是接口&#xff08;interface&#xff09;&#xff0c;它的作用&#xff0c;接口的使用场景。接口和类型别名&#xff08;Type Alias&#xff09;的区别4. 什么是泛型&#xff08;generi…

RK3588开发笔记-v1.3.0-SDK文件系统分区添加

目录 目录 前言 一、分区文件 二、分区文件初始化 三、板级配置文件修改

【Linux】nmcli命令详解

目录 ​编辑 一、概述 二、常用参数使用 2.1 nmcli networking 1.显示NM是否接管网络 2.查看网络连接状态 3.开/关网络连接 2.2 general ​编辑 1.显示系统网络状态 2.显示主机名 3.更改主机名 2.3 nmcli connection ​编辑1.显示所有网络连接 2.显示某个网卡的…

JAVA 100道题(15)

15.使用TreeSet对一组整数进行排序。 在Java中&#xff0c;TreeSet是一个基于红黑树实现的NavigableSet接口。由于它是自动排序的&#xff0c;因此当我们向TreeSet中添加元素时&#xff0c;它们会自动按照自然顺序&#xff08;对于整数&#xff0c;就是从小到大的顺序&#xf…

【数据结构】快速排序(用递归)

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解快速排序&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一. 基本思想二. 快速排序2.1 hoare版本2.2 挖坑法2.3 前后指针法2.4 快速排序优化三数取中法…

redis 基本操作

1、String 类型 赋值语法&#xff1a;SET key value 127.0.0.1:6379> set k1 zhangsan OK 取值语法&#xff1a; GET key 127.0.0.1:6379> get k1 "zhangsan" 设置多个键语法&#xff1a; MSET key value [key value …] 127.0.0.1:6379> mset k2 lisi k3 …

Python学习目录

基础篇 变量赋值篇字符串(string)篇&#xff08;一&#xff09;字符串(string)篇&#xff08;二&#xff09;字符串(string)篇&#xff08;三&#xff09;字符串(string)篇&#xff08;四&#xff09;字符串(string)篇&#xff08;五&#xff09;列表(list)篇&#xff08;一&a…

【Android】【Bluetooth Stack】蓝牙电话协议之接听电话分析(超详细)

1. 精讲蓝牙协议栈&#xff08;Bluetooth Stack&#xff09;&#xff1a;SPP/A2DP/AVRCP/HFP/PBAP/IAP2/HID/MAP/OPP/PAN/GATTC/GATTS/HOGP等协议理论 2. 欢迎大家关注和订阅&#xff0c;【蓝牙协议栈】和【Android Bluetooth Stack】专栏会持续更新中.....敬请期待&#xff0…

MySQL详解

本笔记源于【狂神说Java】 B站收UP主&#xff1a;遇见狂神说。即可看见教程 或者点击链接MySQL最新教程 目录 1、初始MySQL 1.1、数据库简介 1.2、数据库管理系统 1.3、MySQL简介及安装 1.4、SQLyog 2、操作数据库 2.1、操作数据库&#xff08;了解&#xff09; 2.2、数…

LangChain核心模块 Retrieval——Indexing

Indexing 索引 LangChain Indexing API将数据从任何来源同步到向量存储中并保持同步&#xff0c;可以做到&#xff1a; 避免将重复内容写入矢量库避免重写未更改的内容避免在未更改的内容上重新计算嵌入 最重要的是&#xff0c;Indexing API 甚至可以处理相对于原始源文档经…

WM8978 —— 带扬声器驱动程序的立体声编解码器(2)

接前一篇文章&#xff1a;WM8978 —— 带扬声器驱动程序的立体声编解码器&#xff08;1&#xff09; 六、引脚详细说明 引脚&#xff08;PIN&#xff09;名称&#xff08;NAME&#xff09;类型&#xff08;TYPE&#xff09;描述&#xff08;DESCRIPTION&#xff09;1LIP模拟输入…

无极低码SQL模板引擎使用教程示例,自己手撸一个sql模板引擎进行动态sql生成。

无极低码 &#xff1a;https://wheart.cn 无极低码SQL模板使用教程 一、模板结构与规则 无极低码SQL模板通过简洁的Markdown格式&#xff0c;使SQL语句具有更强的灵活性和适应性&#xff0c;简化了根据业务需求定制SQL的过程。 无极低码SQL模板是一种基于Markdown格式的特殊…

006、Dynamo Python 之Revit元素类别

今天我们来聊聊 Revit 元素这点事&#xff0c;不仅仅是在 Dynamo Python 之中涉及&#xff0c;我们在日常使用 Revit 的时候&#xff0c;也涉及这个问题&#xff0c;只是对我们日常画图没什么影响&#xff0c;所以很多人并没太在意这块。 Revit Elements 分为六个组&#xff1a…

Redis实战篇-4

实战篇Redis 1.3 、实现发送短信验证码功能 页面流程 具体代码如下 贴心小提示&#xff1a; 具体逻辑上文已经分析&#xff0c;我们仅仅只需要按照提示的逻辑写出代码即可。 发送验证码 Overridepublic Result sendCode(String phone, HttpSession session) {// 1.校验手机…

第6章 准时与专注

< 回到目录 第6章 准时与专注 自己预定的会议一定要准时参加。如果无法准时出席呢&#xff1f;当你意识到自己即将迟到时&#xff0c;必须第一时间通知所有与会人员&#xff0c;让大家有充分的准备。这是基本的社交礼仪&#xff0c;更重要的&#xff0c;它还能最大限度地减…

算法打卡day15

今日任务&#xff1a; 1&#xff09;110.平衡二叉树 2&#xff09;257. 二叉树的所有路径 3&#xff09;404.左叶子之和 110.平衡二叉树 题目链接&#xff1a;110. 平衡二叉树 - 力扣&#xff08;LeetCode&#xff09; 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树…

基于大数据的空气质量预测和可视化分析

城市空气质量数据采集系统设计与实现 &#x1f3d9;️ 研究背景 &#x1f32c;️ 城市化与环境挑战&#xff1a;随着城市化进程的加快&#xff0c;环境污染问题&#xff0c;尤其是空气质量问题&#xff0c;已成为公众关注的焦点。数据监测的重要性&#xff1a;城市空气质量数…

控价其实是对品牌市场的保护

品牌发展过程中&#xff0c;如果有越来越多的经销商加入&#xff0c;必然要做好控价&#xff0c;否则渠道的混乱&#xff0c;会使得品牌价值受损&#xff0c;比如低价的出现&#xff0c;会影响正规经销商的出货&#xff0c;使其竞争力增加&#xff0c;同时价格的不稳定会连带产…