Czy wbudowany UDF o wartościach tabelowych przewyższa odpowiednik skalarnego UDF na liście kolumn SELECT?

To pytanie wyrosło zSQLServer: Dlaczego warto unikać funkcji definiowanych przez użytkownika?. Zacząłem zadawać pytania w niektórych komentarzach, a odpowiedzi na moje komentarze odeszły od tematu.

Aby nie musieć czytać całej dyskusji: nigdy nie słyszałem, by powiedział, że funkcje zdefiniowane przez użytkownika (UDF) są wolne lub należy ich unikać. Niektóre linki zostały zamieszczone w powyższym pytaniu, aby zilustrować, że były one powolne. Nadal go nie dostałem i poprosiłem o przykład. Wysłano przykład, a różnica w wydajności była ogromna.

Nie mogę być jedyną osobą, która nie zdawała sobie sprawy, że może być tak duża różnica w wydajności. Czułem, że ten fakt powinien zostać podzielony na nowe pytanie i odpowiedź, aby zwiększyć jego szanse na znalezienie. Oto „pytanie”. Nie zamykaj jeszcze, ponieważ chciałbym dać czas odpowiedzi na ogłoszenie.

Oczywiście inni powinni również zamieszczać odpowiedzi lub przykłady. Szczególnie doceniam wszystko, co pomoże mi zrozumiećczemu różnica w wydajności jest tak duża.

Zauważ również, że nie mówię o użyciu UDF w klauzuli WHERE. Wiem, jak może to uniemożliwić optymalizatorowi wykonywanie swojej pracy. Jestem szczególnie zainteresowany różnicami w wydajności, gdy oryginalny UDF był częścią listy kolumn SELECT.

questionAnswers(2)

yourAnswerToTheQuestion