Wie kann ich die Leistung von UDFs bewerten, um herauszufinden, welche schneller ist?

7

Grundsätzlich habe ich zwei skalare UDFs, die dieselben Daten ausgeben, eine mit einem Cursor und eine mit einem rekursiven CTE. Ich möchte bestimmen, welches verwendet werden soll, und das andere verwerfen. Ich würde es vorziehen, diese Entscheidung basierend auf den tatsächlichen Leistungszahlen zu treffen. Ich bin auch neugierig, wie groß der Unterschied zwischen den beiden ist.

Wie kann ich die Leistung dieser UDFs bewerten, um herauszufinden, welche schneller ist?

Faktor Mystic
quelle
'Gut / Beste' gelten als subjektive Fragen, deshalb habe ich Ihre Frage neu formuliert.
CoderHawk
In diesem speziellen Fall geht es nicht um die UDF; ob CTE oder Cursor die Leistung verursachen. Es steht Ihnen frei, beide UDF-Definitionen hier zu veröffentlichen, damit Experten sie einsehen und Problemumgehungen vorschlagen können.
CoderHawk
@ Sandy, das Posten der udf-Definitionen klingt so, als würde dies zu einer qualitativen Analyse führen, was definitiv nicht das ist , wonach ich frage . Ich möchte diese Entscheidung auf der kalten , harten Wahrheit von rohen Performance - Zahlen stützen nur .
Factor Mystic

Antworten:

7

Der SQL Profiler, der Ausführungsplan und die E / A / CPU-Statistiken sind Ihr bester Freund bei der Überprüfung der Leistung Ihres Codes. Sie werden sehen, ob es Leistungsunterschiede zwischen den beiden Funktionsversionen gibt.

In dieser Frage - Tuning-Übungen - finden Sie einige grundlegende und erweiterte Referenzen zum Tuning.

Marian
quelle