Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O SP aninhado do MySql pode ser um gargalo?


Sim é possivel. Não temos medidas de quanto tempo isso leva, mas pode-se esperar que uma tabela temporária cause alguma sobrecarga à medida que você a cria, grava dados nela, consulta-a e depois a descarta. Com que frequência isso está sendo chamado?

Além disso, os procedimentos armazenados do MySQL são geralmente conhecidos por serem bastante ineficientes. Eles não retêm a forma compilada do procedimento, como fazem na Oracle e em outras marcas de RDBMS. Em outras palavras, cada sessão recompila cada procedimento que usa na primeira vez que é chamado.

Primeiro, sugiro eliminar a tabela temporária. Basta projetar o procedimento aninhado para construir a consulta SQL correta como uma string e retornar essa string. Em seguida, o procedimento externo executa a consulta é seu resultado. Você deve ser capaz de pular a criação/descarte da tabela temporária e a inserção na tabela temporária.

Em segundo lugar, se eu estivesse projetando este aplicativo, não vejo necessidade de nenhum procedimento armazenado. Eu recomendaria escrever código para construir a consulta SQL correta em seu aplicativo e, em seguida, apenas executar essa consulta a partir do aplicativo.