Marc Reichelt: MySQL 5: Wann sind eigene Funktionen bzw. Prozeduren sinnvoll?

Beitrag lesen

Hallo Andreas,

das, und auch deine Beispiele, kann man pauschal kaum beantworten, ohne die Umgebung zu kennen. Auch kann sich die Antwort mit der Änderung der Umgebung ändern. Ist der MySQL-Server dediziert? Wie sind die Server (Web/MySQL) ausgelastet? Wie ist die Netzwerkverbindung zwischen Web- und MySQL-Server?

In diesem Fall laufen MySQL und Apache direkt auf einem Server.

Ich möchte aber behaupten, dass es in den meisten Fällen, in denen sich Web- und MySQL-Server auf derselben Maschine befinden, relativ egal ist, wer von beiden die Berechnung durchführt (obwohl natürlich auch dort gilt, wenn einer von beiden bereits an seinem Limit angekommen ist, er nicht noch mit weiteren Aufgaben belastet werden sollte).

Natürlich. Ich habe meine Frage vermutlich auch falsch formuliert - bei Berücksichtigung der Performance kommen noch ganz andere Dinge hinzu.
Aber primär interessiert mich momentan, ob so etwas wie ich möchte (Tabelle als Resultat einer MySQL-Funktion bzw. -Prozedur) überhaupt machbar ist - und wenn ja, ob man dann dies dann besser auf MySQL oder auf PHP laufen lassen möchte.

Speziell gibt es also beispielsweise eine Funktion "get_user(parameterA, parameterB, ..., parameterN)" in PHP (die es so oder so gibt), für die nun aber der ganze SQL-Code im PHP-Code drinnen steht. Das kann schon sehr verwirrend aussehen. Daher nun die Frage, ob man nicht einfach eine gleichnamige Funktion get_user(parameterA, parameterB, ..., parameterN) in MySQL erstellt, die dann den ganzen MySQL-Code enthält, und die dann von der entsprechenden PHP-Methode aufgerufen wird.

Sodass ich nicht mehr einen Query in der Form "SELECT id, name, ... FROM table WHERE ..." schreiben muss, sondern stattdessen einfach eine Funktion aufrufe. Ist das möglich?

Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
panic("Oh boy, that early out of memory?");
        linux-2.2.16/arch/mips/mm/init.c
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)