Ano, je to možné. Nemáme měření toho, jak dlouho to trvá, ale dá se očekávat, že dočasná tabulka způsobí určitou režii, když ji vytváříte, zapisujete do ní data, dotazujete se na ně a pak ji zahazujete. Jak často se to nazývá?
Také je obecně známo, že uložené procedury MySQL jsou značně neefektivní. Nezachovávají zkompilovanou formu postupu, jako je tomu u Oracle a dalších značek RDBMS. Jinými slovy, každá relace znovu zkompiluje každou proceduru, kterou používá při prvním volání.
Nejprve bych navrhl odstranit tabulku temp. Stačí navrhnout vnořenou proceduru k vytvoření správného SQL dotazu jako řetězce a vrátit tento řetězec. Pak vnější procedura provede dotaz je jeho výsledkem. Měli byste být schopni přeskočit vytvoření/zapuštění dočasné tabulky a vložení do dočasné tabulky.
Za druhé, pokud bych tuto aplikaci navrhoval, nevidím žádnou potřebu ani jedné uložené procedury. Doporučil bych napsat kód pro sestavení správného SQL dotazu ve vaší aplikaci a pak jen spustit tento dotaz z aplikace.