none
인라인 테이블의 호출 방법에 따라 속도가 달라지는 문제 RRS feed

  • 질문

  • ALTER FUNCTION [dbo].[uf_GetMyData]
     ( @Date1 CHAR(8), @Date2 CHAR(8) )
    RETURNS TABLE
    AS
    RETURN
    (
     SELECT TradDate, CustCd, ProdCd, TradType
     FROM MyTable (NOLOCK)
     WHERE TradDate BETWEEN @Date1 AND @Date2

    위에서 만든 인라인 테입블 반환 함수를 아래와 같이

    두가지 방법으로 호출해보면,

    case1:
     DECLARE @Date1 CHAR(8) = '20150101'
     DECLARE @Date2 CHAR(8) = '20150131'
     SELECT * FROM dbo.uf_GetMyData(@Date1, @Date2)

    case2:
     SELECT * FROM dbo.uf_GetMyData('20150101', '20150131')

    두번째 방법으로 호출한 것이 첫번째 방법으로 호출하였을 때보다 훨씬 더 많은 시간이 소요된다.

    대상 테이블에는 날짜 컬럼을 키로하는 인덱스가 있다.

    왜 이런 현상이 생기는지 궁급합니다.

    이것이 일반적인 경우가 맞나요?

    2015년 7월 8일 수요일 오전 3:48