MYSQL slow down using UNION ALL
Your query is equivalent to this one:

(SELECT * FROM memtable1) 
UNION ALL 
(SELECT * FROM table2)
LIMIT 1000 ;


The query asks for all the rows from memtable1, without any limit. Then the UNION is applied and the LIMIT 1000 is applied to the result of the UNION. It seems that the execution plan is not very efficient, and getting the rows of both tables in memory first (so 100 thousand rows) and then applying the limit. 

If you want only 1000 rows from each table, try this: 

(SELECT * FROM memtable1 LIMIT 1000) 
UNION ALL 
(SELECT * FROM table2 LIMIT 1000) ;


And if you want up to 1000 rows from both tables:

(SELECT * FROM memtable1 LIMIT 1000) 
UNION ALL 
(SELECT * FROM table2 LIMIT 1000) 
LIMIT 1000 ;