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

Flere forespørgsler VS Stored Procedure

Enhver anbefaling afhænger delvist af, hvor scriptet, der udfører forespørgslerne, befinder sig. Hvis scriptet, der udfører forespørgslerne, er på den samme server som MySQL-instansen, vil du ikke se den store forskel, men der vil stadig være en lille overhead i at udføre 200.000 forespørgsler sammenlignet med 1 lagret procedure.

Mit råd ville dog være at gøre det som en lagret procedure. Du har måske brug for et par procedurer.

  1. En procedure, der kombinerer de 10 udsagn, du laver pr. operation, til 1 opkald
  2. En procedure, der kan iterere over en tabel med argumenter ved hjælp af en CURSOR til at indgå i procedure 1

Din proces ville være

  1. Fyld en tabel med argumenter, som ville blive indført i procedure 1 ved procedure 2
  2. Udfør procedure 2

Dette ville give ydeevnefordele, da der ikke er behov for at oprette forbindelse til MySQL-serveren 20000*10 gange. Mens overhead pr. anmodning kan være lille, tæller millisekunder. Selvom besparelsen er 0,1 ms pr. anmodning, er det stadig 20 sekunder gemt.

En anden mulighed kunne være at ændre dine anmodninger om at udføre alle 20.000 dataoperationer på én gang (hvis det er muligt) ved at justere dine 10 forespørgsler for at trække data fra databasetabellen nævnt ovenfor. Nøglen til alt dette er at få argumenterne indlæst i en enkelt batch-indsættelse og derefter bruge sætninger på MySQL-serveren i en procedure til at behandle dem uden yderligere rundrejser.




  1. LISTAGG i Oracle for at returnere forskellige værdier

  2. Find ud af, hvilket valutasymbol din session bruger i Oracle

  3. MySQL-transaktioner og samtidige indsættelser

  4. Konverter datoformat til DD/MMM/ÅÅÅÅ-format i SQL Server