Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Kann MySql Nested SP ein Engpass sein?

Ja es ist möglich. Wir haben keine Messungen darüber, wie lange dies dauert, aber man kann davon ausgehen, dass eine temporäre Tabelle etwas Overhead verursacht, wenn Sie sie erstellen, Daten hineinschreiben, sie abfragen und dann löschen. Wie oft wird hier angerufen?

Außerdem sind die gespeicherten Prozeduren von MySQL allgemein als ziemlich ineffizient bekannt. Sie behalten nicht die kompilierte Form der Prozedur bei, wie dies bei Oracle und anderen RDBMS-Marken der Fall ist. Mit anderen Worten, jede Sitzung kompiliert jede Prozedur neu, die sie verwendet, wenn sie zum ersten Mal aufgerufen wird.

Zuerst würde ich vorschlagen, die Temp-Tabelle zu eliminieren. Entwerfen Sie einfach die verschachtelte Prozedur, um die richtige SQL-Abfrage als Zeichenfolge zu erstellen, und geben Sie diese Zeichenfolge zurück. Dann führt die äußere Prozedur die Abfrage als Ergebnis aus. Sie sollten in der Lage sein, das Erstellen/Löschen der temporären Tabelle und das Einfügen in die temporäre Tabelle zu überspringen.

Zweitens sehe ich beim Entwerfen dieser App keine Notwendigkeit für eine der beiden gespeicherten Prozeduren. Ich würde empfehlen, Code zu schreiben, um die richtige SQL-Abfrage in Ihrer Anwendung zu erstellen, und diese Abfrage dann einfach von der Anwendung aus auszuführen.