示例慢 SQL
SELECT * FROM task_engine_base_data WHERE outer_task_id = 1001871
场景上下文
- 数据表结构现状
为减少阅读干扰,已去除与本案例无关的字段及索引定义
CREATE TABLE `task_engine_base_data` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`task_type_id` int(11) NOT NULL DEFAULT '0' COMMENT '任务类型ID',
`outer_task_id` varchar(64) NOT NULL DEFAULT '' COMMENT '外部任务ID',
PRIMARY KEY (`id`),
KEY `idx_outer_id_type_id` (`outer_task_id`,`task_type_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='子任务规则表';
原因分析
慢SQL的EXPLAIN
表中存在索引 idx_outer_id_type_id(outer_task_id,task_type_id)
。
字段定义 outer_task_id varchar(64) NOT NULL DEFAULT ''
。
字段类型为字符串,但查询条件的值为整型ÿ