Zoiets zou kunnen. Ik heb niet een heleboel 'honden-met-logboeken' om dit tegen te testen, maar ik heb een licht bewerkte versie geprobeerd en het basisidee lijkt te werken.
Bouw de queryreeks op in een variabele en gebruik vervolgens een voorbereide instructie om het uit te voeren.
SELECT @query:=CONCAT(
'select count(*) from ('
, GROUP_CONCAT( CONCAT( y.prefix, x.table_schema, y.postfix ) SEPARATOR ' UNION ALL ' )
, ') as total_count' )
FROM (
SELECT DISTINCT table_schema
FROM information_schema.tables
WHERE table_schema LIKE '%dog%'
) AS x
JOIN (
SELECT
'select * from ' AS prefix
, '.log where insane = 1' AS postfix
) AS y
;
-- SELECT @query AS Query;
PREPARE STMT FROM @query;
EXECUTE STMT;
DEALLOCATE PREPARE STMT;