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

Várias consultas VS Procedimento armazenado


Qualquer recomendação depende parcialmente de onde reside o script que executa as consultas. Se o script que executa as consultas estiver no mesmo servidor que a instância do MySQL, você não verá muita diferença, mas ainda haverá uma pequena sobrecarga na execução de 200k consultas em comparação com 1 procedimento armazenado.

Meu conselho de qualquer forma seria torná-lo como um procedimento armazenado. Você precisaria talvez de alguns procedimentos.
  1. Um procedimento que combina as 10 instruções que você faz por operação em uma chamada
  2. Um procedimento que pode iterar sobre uma tabela de argumentos usando um CURSOR para alimentar o procedimento 1

Seu processo seria
  1. Preencha uma tabela com argumentos que seriam alimentados no procedimento 1 pelo procedimento 2
  2. Executar procedimento 2

Isso traria benefícios de desempenho, pois não há necessidade de se conectar ao servidor MySQL 20.000*10 vezes. Embora a sobrecarga por solicitação possa ser pequena, os milissegundos se somam. Mesmo que a economia seja de 0,1 ms por solicitação, ainda são 20 segundos salvos.

Outra opção pode ser modificar suas solicitações para executar todas as 20 mil operações de dados de uma só vez (se viável) ajustando suas 10 consultas para extrair dados da tabela de banco de dados mencionada acima. A chave para tudo isso é obter os argumentos carregados em uma única inserção de lote e, em seguida, usar instruções no servidor MySQL dentro de um procedimento para processá-los sem mais viagens de ida e volta.