Табличная функция при преобразовании в хранимую процедуру работает медленно - PullRequest
1 голос
/ 15 июля 2011

У меня есть довольно сложная табличная функция, выполняющая внутренние объединения различных таблиц. Я должен настроить эту функцию. SQL не показывает фактический план выполнения, выполненный внутри функции. Поэтому я подумал преобразовать это в хранимую процедуру и посмотреть план запроса. Когда я запускал исходную функцию, а также эту новую хранимую процедуру в одном пакете, хранимая процедура занимала 100% времени.

Это ожидается? Я использую SQL Server 2008.

1 Ответ

2 голосов
/ 15 июля 2011

Да, это ожидается.Многозначная табличная функция (TVF) - это черный ящик, и внутренняя обработка не видна.

Она не выполняется медленно (что может быть по другим причинам,но это не вопрос).Оптимизатор не может правильно оценить TVF и процедуру и поэтому выделяет 100% пакета для процедуры.

Один из способов - запустить код (отдельно) и использовать SQL Profiler, чтобы отметить Duration, Reads, CPU.

...