MySQL select in 语句未使用索引,产生磁盘临时表,导致 crash
1. 问题描述
业务执行一个非常简单的 SQL,结果导致 MySQL crash,并且每次都能复现。
MySQL 版本:
Percona Server for MySQL 5.7.20
SQL 语句:
select * from a where a.name in (select distinct name from b) limit 1000;
a 表 和 b 表 各包含 150w 条数据。
表结构:
CREATE TABLE `a` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1500001 DEFAULT CHARSET=utf8mb4;
CREATE TABLE `b` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1500001 DEFAULT CHARSET=utf8mb4;