Gestern hatten wir ein Szenario, wo wir den Typ db field
bekommen mussten und auf der Basis mussten wir die Beschreibung des Feldes schreiben. WieDatenbank Funktion VS Fallanweisung
Select (Case DB_Type When 'I' Then 'Intermediate'
When 'P' Then 'Pending'
Else 'Basic'
End)
From DB_table
Ich schlug vor, eine db-Funktion anstelle dieser Fallanweisung zu schreiben, weil das wiederverwendbar wäre. Wie
Select dbo.GetTypeName(DB_Type)
from DB_table
Der interessante Teil ist, Einer unserer Entwickler unter Verwendung der Datenbankfunktion ineffizient sein wird als database functions
sind langsamer als Case statement
. Ich suchte über das Internet, um die Antwort zu finden, die in Bezug auf Effizienz besser Ansatz ist, aber leider fand ich nichts, das als zufriedene Antwort betrachtet werden könnte. Bitte erleuchte mich mit deinen Gedanken, welcher Ansatz ist besser?
Hat dieser 'dbo.GetTypeName (DB_Type)' den gleichen 'CASE' Ausdruck? Sie fragen nach dem Unterschied zwischen dem direkten Ausdruck eines CASE-Ausdrucks in eine Abfrage und dem Einfügen in eine benutzerdefinierte Funktion *** hinsichtlich der Leistung und Wiederverwendbarkeit ***. Recht? –
Ja! alles ist gleich. –