Запрос выполняется за 0.0010 сек, затрагивая 21 млн строк (если перемножить значения rows в explain), возвращает 4000 строк.
Всё это дело надо записать в базу, при использовании CREATE TABLE SELECT запрос выполняется 40 секунд. Пробовал делать insert, insert on DUPLICATE KEY UPDATE, CREATE TEMPORARY TABLE - аналогично.
В MSSQL с такой штукой сталкивался, тема решилась в предварительном создании таблицы, куда будут писаться данные. Серверу не нужно проверять, какой тип данных будет в том или ином столбце.