Табличные функции Transact-SQL материализуют результаты вызова функции в промежуточную таблицу . Поскольку они используют промежуточную таблицу, они могут поддерживать ограничения и уникальные индексы для результатов. Эти функции могут быть чрезвычайно полезны при возврате больших результатов.
Напротив, табличные функции CLR представляют собой потоковую альтернативу. Не требуется, чтобы весь набор результатов материализовался в одной таблице . Объект IEnumerable, возвращаемый управляемой функцией, напрямую вызывается планом выполнения запроса, который вызывает табличную функцию, а результаты используются в пошаговом режиме. Эта потоковая модель гарантирует, что результаты могут быть использованы сразу после того, как будет доступна первая строка, вместо ожидания заполнения всей таблицы. Это также лучшая альтернатива, если вы возвращаете очень большое количество строк, потому что они не должны быть материализованы в памяти в целом. Например, управляемая табличная функция может использоваться для анализа текстового файла и возврата каждой строки в виде строки.
Ссылка