Ja, det er muligt. Vi har ikke målinger af, hvor lang tid det tager, men man kan forvente, at en temp-tabel forårsager nogle overhead, når du opretter den, skriver data ind i den, forespørger efter den og så dropper den. Hvor ofte bliver dette kaldt?
Også MySQL's lagrede procedurer er generelt kendt for at være ret ineffektive. De beholder ikke den kompilerede form af proceduren, som de gør i Oracle og andre RDBMS-mærker. Med andre ord, hver session omkompilerer hver procedure, den bruger, første gang den kaldes.
For det første vil jeg foreslå at fjerne temp-tabellen. Du skal bare designe den indlejrede procedure for at bygge den rigtige SQL-forespørgsel som en streng, og returnere den streng. Derefter udfører den ydre procedure forespørgslen er dens resultat. Du burde være i stand til at springe over oprettelse/slip af temp-tabellen og indsættelsen i temp-tabellen.
For det andet, hvis jeg designede denne app, ser jeg ikke noget behov for nogen af de lagrede procedurer. Jeg vil anbefale at skrive kode for at bygge den rigtige SQL-forespørgsel i din applikation, og derefter bare udføre den forespørgsel fra applikationen.