sql >> Database >  >> RDS >> Mysql

Kan MySql geneste SP een knelpunt zijn?

Ja het is mogelijk. We hebben geen metingen van hoe lang dit duurt, maar je kunt verwachten dat een tijdelijke tabel wat overhead veroorzaakt als je hem maakt, er gegevens in schrijft, ernaar vraagt ​​en hem dan laat vallen. Hoe vaak wordt dit gebeld?

Ook is het algemeen bekend dat de opgeslagen procedures van MySQL behoorlijk inefficiënt zijn. Ze behouden niet de gecompileerde vorm van de procedure, zoals in Oracle en andere RDBMS-merken. Met andere woorden, elke sessie hercompileert elke procedure die het gebruikt de eerste keer dat het wordt aangeroepen.

Ten eerste zou ik willen voorstellen om de temp-tabel te verwijderen. Ontwerp gewoon de geneste procedure om de juiste SQL-query als een tekenreeks te bouwen en retourneer die tekenreeks. Vervolgens voert de buitenste procedure uit dat de query het resultaat is. U zou het maken/verwijderen van de tijdelijke tabel en het invoegen in de tijdelijke tabel moeten kunnen overslaan.

Ten tweede, als ik deze app zou ontwerpen, zie ik geen noodzaak voor een van beide opgeslagen procedures. Ik raad aan om code te schrijven om de juiste SQL-query in uw toepassing te bouwen en die query vervolgens vanuit de toepassing uit te voeren.



  1. Hoe kan ik kolommen afzonderlijk tellen en groeperen met MySQL?

  2. UTL_FILE.FOPEN() procedure accepteert pad voor directory niet?

  3. mysqli::mysqli():(HY000/2002):Kan geen verbinding maken met lokale MySQL-server via socket 'MySQL' (2)

  4. MySQL GROUP &COUNT Meerdere tabellen