广告
返回顶部
首页 > 资讯 > 数据库 >MySQL隐式类型转换导致索引失效
  • 940
分享到

MySQL隐式类型转换导致索引失效

2024-04-02 19:04:59 940人浏览 泡泡鱼
摘要

今天发现一个问题,where条件的列上明明有索引,但是执行计划还是走全表扫描Mysql>  explain select task_id&n

今天发现一个问题,where条件的列上明明有索引,但是执行计划还是走全表扫描

Mysql>  explain select task_id FROM mostop_xiaodai_collection_call_auto WHERE task_id = 433423882127424 AND task_data_id = 27739131157286912;
+----+-------------+-------------------------------------+------------+------+------------------------------+------+---------+------+---------+----------+-------------+
| id | select_type | table                               | partitions | type | possible_keys                | key  | key_len | ref  | rows    | filtered | Extra       |
+----+-------------+-------------------------------------+------------+------+------------------------------+------+---------+------+---------+----------+-------------+
|  1 | SIMPLE      | mostop_xiaodai_collection_call_auto | NULL       | ALL  | IDX_task_id,IDX_task_data_id | NULL | NULL    | NULL | 3101134 |     1.00 | Using where |
+----+-------------+-------------------------------------+------------+------+------------------------------+------+---------+------+---------+----------+-------------+
1 row in set, 5 warnings (0.00 sec)

查看表结构 

mysql> show create table mostop_xiaodai_collection_call_auto\G
*************************** 1. row ***************************
       Table: mostop_xiaodai_collection_call_auto
Create Table: CREATE TABLE `mostop_xiaodai_collection_call_auto` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '编号',
  `agentid` int(10) unsigned NOT NULL COMMENT '渠道 ID',
  `loan_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '借款 ID',
  `user_id` bigint(20) unsigned NOT NULL COMMENT '借款人 ID',
  `call_mobile` varchar(20) NOT NULL COMMENT '手机号',
  `call_name` varchar(20) NOT NULL COMMENT '名称',
  `call_sex` varchar(20) NOT NULL COMMENT '性别',
  `call_due_date` date NOT NULL COMMENT '应还日期',
  `call_overdue_day` int(10) NOT NULL COMMENT '逾期天数(负数为贷前催告的天数)',
  `call_talking_type` varchar(50) NOT NULL COMMENT '话术 (A:贷前7天的提醒话术 B:贷前3天的话术 C:贷前3天的话术 D:贷前1天的话术 Ps:若话术为空,则使用的是大唐的话术,其余类似due_one之类的均已废弃)',
  `call_platfORM_name` varchar(100) NOT NULL COMMENT '平台名称',
  `third_party_system` tinyint(3) unsigned NOT NULL COMMENT '第三方IVR系统,1 = 百可录(暂停使用),2 = 大唐,3 = 云电帮(暂停使用), 4 = 科大讯飞, 5 = 基立讯,99 = 决策引擎测试',
  `send_time` datetime DEFAULT NULL COMMENT '发送时间',
  `send_status` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '发送状态,0 = 未发送,1 = 发送成功,2 = 发送失败',
  `send_result` tinyint(3) DEFAULT '0' COMMENT 'IVR结果( 0 = 代表无效接听,或者未接听,1 = 有效接听,已通知用户)',
  `talking_time` int(10) NOT NULL DEFAULT '0' COMMENT '通话时长',
  `task_id` varchar(32) NOT NULL DEFAULT '0' COMMENT '外呼任务ID (只为科大讯飞服务)',
  `task_data_id` varchar(32) NOT NULL DEFAULT '0' COMMENT '外呼任务二级ID (只为科大讯飞服务)',
  `resend_num` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '重发次数',
  `receive_time` datetime DEFAULT NULL COMMENT '接收时间',
  `receive_content` text COMMENT '接收内容',
  `unique_tab` varchar(100) DEFAULT NULL COMMENT '唯一标识',
  `created_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
  `updated_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间',
  PRIMARY KEY (`id`),
  KEY `loan_id` (`agentid`,`loan_id`),
  KEY `send_result` (`call_mobile`,`send_time`),
  KEY `receive_time` (`receive_time`),
  KEY `IDX_task_id` (`task_id`),
  KEY `IDX_task_data_id` (`task_data_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5292233 DEFAULT CHARSET=utf8 COMMENT='催收自动通话表'
1 row in set (0.00 sec)

查看warnings

MySQL隐式类型转换导致索引失效


因为这两列为字符串类型 ,但是sql中并没有加引号!!

`task_id` varchar(32) 
`task_data_id` varchar(32)

加上引号后查看执行计划

mysql>  explain select task_id FROM mostop_xiaodai_collection_call_auto WHERE task_id = '433423882127424' AND task_data_id =' 27739131157286912';
+----+-------------+-------------------------------------+------------+------+------------------------------+------------------+---------+-------+------+----------+-------------+
| id | select_type | table                               | partitions | type | possible_keys                | key              | key_len | ref   | rows | filtered | Extra       |
+----+-------------+-------------------------------------+------------+------+------------------------------+------------------+---------+-------+------+----------+-------------+
|  1 | SIMPLE      | mostop_xiaodai_collection_call_auto | NULL       | ref  | IDX_task_id,IDX_task_data_id | IDX_task_data_id | 98      | const |    1 |     5.00 | Using where |
+----+-------------+-------------------------------------+------------+------+------------------------------+------------------+---------+-------+------+----------+-------------+
1 row in set, 1 warning (0.00 sec)


您可能感兴趣的文档:

--结束END--

本文标题: MySQL隐式类型转换导致索引失效

本文链接: https://www.lsjlt.com/news/36802.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL隐式类型转换导致索引失效
    今天发现一个问题,where条件的列上明明有索引,但是执行计划还是走全表扫描mysql>  explain select task_id&n...
    99+
    2022-10-18
  • MySQL隐式类型转换导致索引失效的解决
    目录问题 复现 隐式转换 总结 参考 问题 在工作中发现,有一个接口只执行一条SQL查询语句,并且SQL明明使用了主键列,但是速度很慢。 在MySQL中EXPLAINN后发现,执行...
    99+
    2022-11-12
  • MySQL索引失效之隐式转换的问题
    目录常见索引失效:一、常见索引失效场景1、条件字段函数操作2、条件字段运算操作3、隐式类型转换4、隐式字符编码转换二、类型转换1、字符串转整型2、时间类型转换常见索引失效: 1. 条...
    99+
    2022-11-12
  • Mysql 5.6 "隐式转换"导致的索引失效和数据不准确的问题
    背景 在一次进行SQl查询时,我试着对where条件中vachar类型的字段去掉单引号查询,这个时候发现这条本应该很快的语句竟然很慢。这个varchar字段有一个复合索引。其中的总条数有58989,甚...
    99+
    2022-05-17
    Mysql 5.6隐式转换导致的索引失效 Mysql 5.6隐式转换
  • 浅谈MySql整型索引和字符串索引失效或隐式转换问题
    目录问题概述问题重现问题引申结论问题概述 今天在上班时,DBA突然找出来一段sql,表示该sql存在隐式转换,不走索引。经过我们的查看后,发现是类型varchar的字段, 我们使用条...
    99+
    2022-11-12
  • 类型隐式转换导致的?No,并不是
    本文作者:叶金荣,知数堂联合创始人,MySQL DBA课程讲师。Oracle MySQL ACE,MySQL布道师。有多年MySQL及系统架构设计经验,擅长MySQL企业级应用、数据库设计、优化、故障处理等。 疑似类型隐式转换一例 ...
    99+
    2017-06-27
    类型隐式转换导致的?No,并不是
  • Mysql 5.6 "隐式转换"导致的索引失效和数据不准确的解决方法
    这篇文章主要介绍了Mysql 5.6 "隐式转换"导致的索引失效和数据不准确的解决方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了...
    99+
    2022-10-18
  • 如何解决MySql整型索引和字符串索引失效或隐式转换问题
    这篇文章主要为大家展示了“如何解决MySql整型索引和字符串索引失效或隐式转换问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决MySql整型索引和字符串索引失效或隐式转换问题”这篇文章...
    99+
    2023-06-25
  • MySQL索引失效后隐式转换的问题这么解决
    MySQL索引失效后隐式转换的问题这么解决,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。常见索引失效: 条件索引字段"不干净":函数操作、运算操作 隐式...
    99+
    2023-06-26
  • MySQL性能优化:MySQL中的隐式转换造成的索引失效
    数据库优化是一个任重而道远的任务,想要做优化必须深入理解数据库的各种特性。在开发过程中我们经常会遇到一些原因很简单但造成的后果却很严重的疑难杂症,这类问题往往还不容易定位,排查费时费力最后发现是一个很小的疏忽造成的,又或者是因为不...
    99+
    2020-08-13
    MySQL性能优化:MySQL中的隐式转换造成的索引失效
  • MySQL导致索引失效的几种情况
    目录一、准备工作二、索引失效规则1.优先使用联合索引2.最左匹配原则3.范围条件右边的列索引失效4.计算、函数导致索引失效5.类型转换导致索引失效6.不等于(!= 或者<>)索引失效7.is null可以使用...
    99+
    2022-06-23
    Mysql 索引失效
  • 哪些情况会导致 MySQL 索引失效
    目录前言创建测试表和数据索引失效情况1:非最左匹配索引失效情况2:错误模糊查询索引失效情况3:列运算索引失效情况4:使用函数索引失效情况5:类型转换索引失效情况6:使用 is not...
    99+
    2022-11-13
  • MySQL 使用 OR 条件导致索引失效
    背景:需要根据工号或英文名带出中文名,但数据量过大,导致响应时间过长 查询工号为 x20230506 或者英文名是 codeporter 的用户信息 select * from user_test where login...
    99+
    2023-09-05
    mysql 性能优化
  • MySQL-数据类型隐式转换
    MySQL-数据类型隐式转换 关键字问题描述解决问题思路问题总结 关键字 数据类型不同导致隐式转换 问题描述 SQL 一: select id,sku,weight,image_...
    99+
    2023-09-08
    mysql sql
  • MySQL导致索引失效的情况有哪些
    本篇内容主要讲解“MySQL导致索引失效的情况有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL导致索引失效的情况有哪些”吧!一、准备工作首先准备两张表用于演示:CREATE&nbs...
    99+
    2023-07-02
  • mysql中什么情况会导致索引失效
    这篇文章主要为大家展示了“mysql中什么情况会导致索引失效”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql中什么情况会导致索引失效”这篇文章吧。为了讲解以下索引内容,我们先建立一个临时...
    99+
    2023-06-25
  • MySQL因数据类型转换导致执行计划使用低效索引的示例分析
    小编给大家分享一下MySQL因数据类型转换导致执行计划使用低效索引的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!查看表的索引情况mysql> show ...
    99+
    2022-10-18
  • 浅谈mysql哪些情况会导致索引失效
    下面有一些培训教学机构的口诀和我个人的一些总结: 为了讲解以下索引内容,我们先建立一个临时的表 test02 CREATE TABLE `sys_user` ( `id` v...
    99+
    2022-11-12
  • mysql存在哪些隐式类型转换
    mysql存在的隐式类型转换有字符串到数值类型、日期和时间类型、浮点数和整数类型、NULL值等。详细介绍:1、字符串到数值类型的隐式类型转换,当一个字符串和一个数值类型的值进行比较或计算时,MySQL会将字符串转换为数值类型;2、日期和时间...
    99+
    2023-11-14
    mysql 隐式类型转换
  • 导致MySQL索引失效的一些常见写法总结
    前言 最近一直忙着处理原来老项目遗留的一些SQL优化问题,由于当初表的设计以及字段设计的问题,随着业务的增长,出现了大量的慢SQL,导致MySQL的CPU资源飙升,基于此,给大家简单分享下这些比较使用的易于学习和使用...
    99+
    2022-05-16
    mysql 索引 mysql索引使用 mysql组合索引失效
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作