Mysql
 sql >> Database >  >> RDS >> Mysql

MySql nidificato SP può essere un collo di bottiglia?

Si è possibile. Non disponiamo di misurazioni di quanto tempo ci vuole, ma ci si può aspettare che una tabella temporanea causi un sovraccarico durante la creazione, la scrittura di dati in essa, la query e quindi la rimozione. Quanto spesso viene chiamato?

Inoltre, le procedure memorizzate di MySQL sono generalmente note per essere piuttosto inefficienti. Non mantengono la forma compilata della procedura, come fanno in Oracle e in altri marchi RDBMS. In altre parole, ogni sessione ricompila ogni procedura che usa la prima volta che viene chiamata.

Innanzitutto, suggerirei di eliminare la tabella temporanea. Basta progettare la procedura nidificata per creare la query SQL corretta come stringa e restituire quella stringa. Quindi la procedura esterna esegue la query è il suo risultato. Dovresti essere in grado di saltare la creazione/rimozione della tabella temporanea e l'inserimento nella tabella temporanea.

In secondo luogo, se stessi progettando questa app, non vedo alcuna necessità di nessuna delle stored procedure. Consiglierei di scrivere codice per creare la query SQL corretta nella tua applicazione, quindi eseguire semplicemente quella query dall'applicazione.