테이블 반환 함수가 2가지가 있는데 댓글에서 했던 것처럼 2번 형식과 단순 select (view 하고 같네요) 있던데요
아래 내용처럼 2번방식으로 하면 속도면에서 안좋은 결과가 되나요?
1. inlene TVF 는 질문자 님께서 사용한 방식을 말하며, parameterized view 와 동일하며,
2. multi-statement TVF 는 Table 변수를 지정하고, 여러 문장으로 나눈 while 이라던지 필요한 연산을 하고 결과값을 table 변수에 넣어서 출력 합니다. 그럼 성능이 좋을까요? 성능이 좋을리 없겠죠 table 변수는 통계정보가 없기 때문에, SQL 엔진은 cadinality 정보를 얻어 optimize 과정에서 효율화를 못하게 됩니다. 상대적으로 비효율적인 플랜은 나쁜 성능으로 이어지기도 합니다. 고의로 이러한 과정이 필요한 경우도 있을 것이고 그것이 성능이 좋아지는 경우도 있겠지만 이 두 차이를 이해하신다면, 경우에 따라서 어떤것을 써야 할 지 선택 할 수 있으리라 봅니다.
전 성능적인것 보다는 구현쪽을 중점을 둡니다. ㅎㅎ
튜닝적인 부분은 전문 DBA님들께서 설명을 해주셨으면 합니다.. 민석님 ?
가끔은 감각적인 쿼리가 땡기기도 합니다...
다 떠나서 이방법 저방법을 알아야 비교도 하고 구현도 합니다... ㅎㅎ
항상, 모두, 언제나 나쁘다고 말할수 있지는 않을듯 합니다.