MySQL 支持Hash Join咯
从8.0.18开始,对等值不能使用索引的Join语句使用Hash Join,之前使用BNL(Block nested loop algorithm);8.0.20移除BNL; 8.0.20 对非等值条件(执行Hash Join再进行过滤(Filter)),笛卡尔积都能使用Hash Join。 CREATE TABLE `t4` ( `c1` int DEFAULT NULL, `c2` int DEFAULT NULL, `c3` int DEFAULT NULL, `c4` int DEFAULT NULL, KEY `c1` (`c1`,`c2`,`c3`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `t5` ( `c1` int DEFAULT NULL, `c2` int DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; delimiter ;; create procedure load_t5() begin declare i int; set i=0; while(i<1000) do insert into t4(c1,c2,c3,c4)