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

Query multiple e stored procedure

Qualsiasi raccomandazione dipende in parte da dove risiede lo script che esegue le query. Se lo script che esegue le query si trova sullo stesso server dell'istanza MySQL, non vedrai molta differenza, ma ci sarà comunque un piccolo sovraccarico nell'esecuzione di 200.000 query rispetto a 1 procedura memorizzata.

Il mio consiglio in entrambi i casi sarebbe però di renderlo come una procedura memorizzata. Avresti bisogno forse di un paio di procedure.

  1. Una procedura che combina le 10 istruzioni eseguite per operazione in 1 chiamata
  2. Una procedura in grado di scorrere una tabella di argomenti utilizzando un CURSOR da inserire nella procedura 1

Il tuo processo sarebbe

  1. Popolare una tabella con argomenti che verrebbero inseriti nella procedura 1 dalla procedura 2
  2. Esegui la procedura 2

Ciò produrrebbe vantaggi in termini di prestazioni poiché non è necessario connettersi al server MySQL 20000*10 volte. Sebbene l'overhead per richiesta possa essere piccolo, i millisecondi si sommano. Anche se il risparmio è di 0,1 ms per richiesta, sono comunque 20 secondi salvati.

Un'altra opzione potrebbe essere quella di modificare le tue richieste per eseguire tutte le 20.000 operazioni sui dati contemporaneamente (se possibile) regolando le tue 10 query per estrarre i dati dalla tabella del database sopra menzionata. La chiave di tutto questo è caricare gli argomenti in un singolo inserimento batch e quindi utilizzare le istruzioni sul server MySQL all'interno di una procedura per elaborarli senza ulteriori round trip.