문제

CREATE VIEW View1
  AS
  SELECT Col1,
         Col2,
         dbo.fn1(col2) as Col3
  FROM   TestTable

  /*
  --Instead of writing below query I created a new View View2


  SELECT Col1,
         Col2,
         dbo.fn1(col2) as Col3
         dbo.fn2(dbo.fn1(col2)) as Col4
  FROM   TestTable
  */

  CREATE VIEW View2
  AS
  SELECT Col1,
         Col2,
         Col3,
         dbo.fn3(col3) as Col4
  FROM   TestTable

위와 같은 쿼리가 있습니다. FN1의 출력 인 열이 있습니다. 이 출력을 다른 기능 FN2에 사용하고 싶었습니다. 이 경우 FN2에서 col3를 직접 사용할 수 없으므로 두 가지 기능을 분할하고 아래와 같이 봅니다. 나는 올바른 방향으로 움직이는 것을 알고 싶었습니다. 제가하고있는 일이 맞습니까? 아니면 더 좋은 방법이 있습니까? View1의 주석은 부분에서 FN1 함수가 두 번 호출됩니까? 아니면 SQL Server가 최적화를 처리할까요?

도움이 되었습니까?

해결책

당신은 이것을합니다 ...

SELECT
    Col1,
    Col2,
    col3,
    dbo.fn2(col3) AS Col4
FROM
    (
    SELECT
        Col1,
        Col2,
        dbo.fn1(col2) as Col3
    FROM
        TestTable
    ) foo
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top