SQL이 직접 인라인 된 경우 SQL Server 2008에서 인라인 테이블 반환 함수를 사용하는 데 비용이 발생하지 않습니까? 우리의 응용 프로그램은 일반적인 쿼리를 재사용하기 위해 인라인 테이블 값 함수를 매우 많이 사용하지만 최근에 쿼리를 사용하지 않으면 쿼리가 훨씬 빠르게 실행됩니다. 나는이 작업을 수행 할 때, 이제SQL Server의 인라인 테이블 값 함수의 비용
CREATE FUNCTION dbo.fn_InnerQuery (@asOfDate DATETIME)
RETURNS TABLE
AS
RETURN
(
SELECT ... -- common, complicated query here
)
:
SELECT TOP 10 Amount FROM dbo.fn_InnerQuery(dbo.Date(2009,1,1)) ORDER BY Amount DESC
쿼리는 약 15 초에 결과를 반환
이 고려하십시오. 그러나
, 나는이 할 : 1 초 미만에
SELECT TOP 10 Amount FROM
(
SELECT ... -- inline the common, complicated query here
) inline
ORDER BY Amount DESC
쿼리 반환.
이 경우 테이블 값 함수를 사용하여 오버 헤드가 발생하여 다소 당황 스럽습니다. 나는 그것을 기대하지 않았다. 우리는 우리의 응용 프로그램에서 테이블 값 함수의 톤을 가지고, 그래서 내가 여기에 뭔가 빠졌는지 궁금 해서요.
gbn, 링크 주셔서 감사합니다. 나는 더 깊이 조사해야 할 것이다. UDF의 실행 계획은 인라인 버전보다 훨씬 복잡해 보입니다. 그렇긴하지만 분명히 이유는 분명하지 않습니다. 그것은 매개 변수를 전달하는 방식으로 동작을 변경하는 것으로 나타납니다. SELECT TOP 10 금액 dbo.fn_InnerQuery (dbo.Date (2008,7,24)) 주문 금액 15 초 후에 실행됩니다. SELECT TOP 10 금액 dbo.fn_InnerQuery ('7/24/2008') 주문량 금액 이 1 미만으로 실행됩니다. – Linus
'2008 년 7 월 24 일'을 사용한 다음 dbo.Date (2008, 7,24) 인라인? – gbn