Announcement

Collapse
No announcement yet.

Performance-Bremse Stored Function

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Performance-Bremse Stored Function

    Hallo,

    ich habe folgende Funktion auf einem MS-SQL 2000 Server erzeugt:

    CREATE FUNCTION DBO.fn_NullValue
    (@Value FLOAT, @Default FLOAT)
    RETURNS FLOAT
    AS
    /*
    Beispiel:

    DECLARE @Value MONEY
    DECLARE @Default MONEY
    SET @Value = null
    SET @Default = 1

    SELECT DBO.fn_NullValue(@Value, @Default) AS Ergebniss
    */
    BEGIN
    DECLARE @Ergebniss AS FLOAT

    SET @Ergebniss = @Default


    IF (@Value IS NOT NULL)
    BEGIN
    SET @Ergebniss = @Value
    END

    RETURN @Ergebniss
    END

    Diese Funktion wird in einem SELECT-Statement verwendet:

    SELECT MK.DatumEinzug, MK.Kaution, DBO.fn_NullValue(MK.Verzinsung, 0) AS Verzinsung
    FROM ....

    Ausführungszeit 1 min 25 sec

    ohne diese Funktion:

    SELECT MK.DatumEinzug, MK.Kaution, MK.Verzinsung
    FROM ....

    Ausführungszeit 7 sec

    Den Test habe ich auch auf einem anderen Server probiert, der Unterschied ist fast identisch

    wieso um Gottes Willen braucht diese sehr einfache Funktion so lange ?????

  • #2
    Hallo,

    wie viele Datensätze sind in dieser Ergebnismenge

    Comment


    • #3
      Hallo Andeas,

      in der Ergebnismenge sind 212 Datensätz

      Comment


      • #4
        Hallo,

        was steht hinter FROM....? Taucht dort ORDER BY oder HAVING auf?

        Wenn die Funktion nur für 212 Datensätze aufgerufen wird, ist die Ausführungszeit in der Tat bedenklich. Zeigt der Query Analyzer in der Darstellung des Auführungsplans irgendwelche Unterschiede an

        Comment


        • #5
          Hallo,
          <BR>
          das SQL-Statement enthällt ein ORDER BY.
          <BR>
          Der zeitliche Unterschied nach entfernen des ORDER BY ändert sich aber nicht.
          <BR>
          Der Ausführungsplan ist jeweils identisch.
          <BR>
          Die Prozessorauslastung in der Version mit Funktion beträgt 100% :-

          Comment

          Working...
          X