Выполняет ли sql-сервер выполнение плана выполнения функций?Функции в SQL Server 2008
ответ
Согласно dmv yes, http://msdn.microsoft.com/en-us/library/ms189747.aspx, но мне нужно будет запустить тест для подтверждения.
Идентификатор объекта на выходе: «Идентификатор объекта (например, хранимая процедура или пользовательская функция) для этого плана запроса».
Протестировано и да, похоже, что они получают отдельную запись в кэш плана.
Test Script:
create function foo (@a int)
returns int
as
begin
return @a
end
Самый основной из функций, созданных.
-- clear out the plan cache
dbcc freeproccache
dbcc dropcleanbuffers
go
-- use the function
select dbo.foo(5)
go
-- inspect the plan cache
select * from sys.dm_exec_cached_plans
go
Кэш плана затем имеет 4 записи, один в списке, как OBJTYPE = Proc является план кэша функции, возьмите ручку и взломать его открытым.
select * from sys.dm_exec_query_plan(<insertplanhandlehere>)
Первый АПЧРК на моем тесте был фактический запрос, то второй АПЧРК был запрос с просьбой для кэша плана. Таким образом, он определенно получил отдельную запись под другим типом proc для выдаваемого adhoc-запроса. Ручка плана также отличалась, и при извлечении с помощью дескриптора плана он возвращает идентификатор объекта исходной функции, в то время как запрос adhoc не предоставляет идентификатор объекта.
Да, см. Ссылку Тиброра Рексема и ответ Эндрю.
Однако ... простая функция значения таблиц во всяком случае не заполняется/расширяется во внешний запрос. Как вид. And my answer (with links) here
То есть, этот тип:
CREATE FUNC dbo.Foo()
RETURNS TABLE
AS
RETURN (SELECT ...)
GO
- 1. SQL Server 2008 - Ошибка функции
- 2. SQL Server - 2008 Rank Эффективность функции
- 3. SQL Server 2008 CAL
- 4. SQL Server 2008
- 5. Архивирование SQL Server 2008
- 6. SQL Server 2008 - Looping
- 7. Фильтрация SQL Server 2008
- 8. Запрос SQL Server 2008
- 9. Getdate() sql server 2008
- 10. Отладчик SQL Server 2008
- 11. Сравнение SQL Server 2008
- 12. SQL Server 2008 Работа
- 13. SQL Server 2008 sp1
- 14. SQL Server 2008 R2:
- 15. SQL SERVER 2008 SSIS
- 16. Отчеты SQL Server 2008
- 17. Агрегация SQL Server 2008
- 18. Вопрос SQL Server 2008
- 19. Отладка SQL Server 2008
- 20. Sql Server 2008 Переустановленное
- 21. Обновление SQL Server 2005 SQL Server 2008
- 22. SQL Server 2008 DBMail
- 23. SQL SERVER 2008 - присоединяется
- 24. SQL Server 2008 Безопасность
- 25. sql server 2008
- 26. SQL Server Express 2008
- 27. SQL Server 2008 Sql snippets
- 28. SQL Server 2008 OPENROWSET
- 29. SQL Server 2008 SELECT
- 30. SQL Server 2008 Express
См: http://sqlblog.com/blogs/tibor_karaszi/archive/2007/06/14/are-execution-plans-for-functions- cached.aspx –