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;