MariaDB [federated]> explain DELETE -> -> FROM -> -> OUTR1 USING D AS OUTR1 -> -> RIGHT JOIN -> -> ( B AS OUTR2 JOIN D AS OUTR3 ON ( OUTR2.pk > OUTR3.col_int_key ) ) -> -> ON ( OUTR1.col_int_nokey = OUTR2.col_int_key ) -> -> WHERE -> -> OUTR1.col_int_key IN ( SELECT DISTINCT INNR1.pk -> -> FROM CC AS INNR1 -> -> WHERE INNR1.col_int_nokey <= 1 OR NOT INNR1.pk > 4 -> -> UNION DISTINCT -> -> SELECT INNR1.pk -> -> FROM AA AS INNR1 -> -> GROUP BY INNR1.col_int_uniq -> -> HAVING COUNT(*) >= 2 -> -> ); +------+--------------------+------------+--------+---------------+---------+---------+------+------+------------------------------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+--------------------+------------+--------+---------------+---------+---------+------+------+------------------------------------------------+ | 1 | PRIMARY | OUTR2 | index | PRIMARY | k_int | 5 | NULL | 100 | Using index | | 1 | PRIMARY | OUTR1 | ALL | NULL | NULL | NULL | NULL | 100 | Using where | | 1 | PRIMARY | OUTR3 | ALL | k_int | NULL | NULL | NULL | 100 | Range checked for each record (index map: 0x4) | | 2 | DEPENDENT SUBQUERY | INNR1 | eq_ref | PRIMARY | PRIMARY | 4 | func | 1 | Using where | | 3 | DEPENDENT UNION | INNR1 | index | NULL | u_int | 5 | NULL | 1 | Using index | | NULL | UNION RESULT | | ALL | NULL | NULL | NULL | NULL | NULL | | +------+--------------------+------------+--------+---------------+---------+---------+------+------+------------------------------------------------+ 6 rows in set (0.001 sec) MariaDB [federated]> notee;