MySQL隐式类型转换导致索引失效
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,今天发现一个问题,where条件的列上明明有索引,但是执行计划还是走全表扫描mysql> explain select task_id FROM mostop_xiaodai_collection_
千家信息网最后更新 2026年11月03日MySQL隐式类型转换导致索引失效
今天发现一个问题,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_autoCreate 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
因为这两列为字符串类型 ,但是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)
时间
讯飞
任务
名称
天数
引号
大唐
服务
类型
索引
有效
成功
代表
借款人
内容
字符
字符串
平台
引擎
性别
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广州淘业互联网络科技
广州大一互联网络科技有限公司
河南云网互联网络科技有限公司
北京路客互联网科技有限公司
互联网中国科技
互联网与科技金融数据
齐家互联网科技
世界互联网领先科技成果
善班互联网科技有限公司
睿民互联网科技
万达互联网科技
安控科技rtu产品工业互联网
互联网科技产品
阿里巴巴算科技企业还是互联网
互联网科技研发水平
长沙互联网科技
科技互联网海报
四川互联网展示科技馆设计
2021世界互联网领先科技成果发布
抖集互联网科技技术咨询
互联网与科技
有格互联网科技
中国互联网科技工作委员会毛军
中国互联网科技股
朗涯互联网科技
互联网金融科技创新
互联网校园科技培训
崇明区互联网教育科技售后服务
中和天地互联网科技有限公司
易租星互联网科技有限公司