SQL Server 2008에서 매개 변수가있는 VIEW 만들기
SQL Server 2008에서 매개 변수화 된 VIEW를 만들 수 있습니까?
아니면 이것에 대한 다른 대안이 있습니까?
인라인 테이블 반환 함수를 만들어보십시오. 예:
CREATE FUNCTION dbo.fxnExample (@Parameter1 INTEGER)
RETURNS TABLE
AS
RETURN
(
SELECT Field1, Field2
FROM SomeTable
WHERE Field3 = @Parameter1
)
-- Then call like this, just as if it's a table/view just with a parameter
SELECT * FROM dbo.fxnExample(1)
SELECT에 대한 실행 계획을 보면 함수에 대한 언급이 전혀 표시되지 않고 실제로 쿼리되는 기본 테이블 만 표시됩니다. 이는 쿼리에 대한 실행 계획을 생성 할 때 기본 테이블에 대한 통계가 사용된다는 것을 의미하므로 좋습니다.
피해야 할 것은 기본 테이블 통계가 사용되지 않고 실행 계획이 좋지 않아 성능이 저하 될 수 있으므로 다중 문 테이블 값 함수입니다. 피해야 할 사항의
예 :
CREATE FUNCTION dbo.fxnExample (@Parameter1 INTEGER)
RETURNS @Results TABLE(Field1 VARCHAR(10), Field2 VARCHAR(10))
AS
BEGIN
INSERT @Results
SELECT Field1, Field2
FROM SomeTable
WHERE Field3 = @Parameter1
RETURN
END
미묘하게 다르지만 쿼리에서 함수를 사용할 때 성능에 큰 차이가있을 수 있습니다.
아니 당신은 할 수 없습니다. 그러나 사용자 정의 테이블 함수를 만들 수 있습니다 .
사실 한 가지 트릭이 있습니다.
create view view_test as
select
*
from
table
where id = (select convert(int, convert(binary(4), context_info)) from master.dbo.sysprocesses
where
spid = @@spid)
... sql-query에서 :
set context_info 2
select * from view_test
다음과 같을 것이다
select * from table where id = 2
그러나 udf를 사용하는 것이 더 적합합니다.
구경꾼이 언급했듯이 UDF로 할 수 있습니다. 그러나 스칼라 함수를 사용하는 큰 집합의 경우 (인라인 테이블 함수에 반대 됨) 함수가 행별로 평가되므로 성능이 저하됩니다. 또는 매개 변수 값을 대체하는 자리 표시자를 사용하여 고정 쿼리를 실행하는 저장 프로 시저를 통해 동일한 결과를 노출 할 수 있습니다.
( 다음 은 스칼라 UDF에 대한 행별 처리에 대한 다소 날짜가 있지만 여전히 관련 기사입니다.)
편집 : 댓글 다시. 성능 저하가 스칼라 UDF에 적용됨을 명확히하기 위해 조정되었습니다.
no. You can use UDF in which you can pass parameters.
참고URL : https://stackoverflow.com/questions/4498364/create-parameterized-view-in-sql-server-2008
'programing' 카테고리의 다른 글
안전하지 않은 항목이 브라우저에서 보안 항목과 보안되지 않은 항목의 혼합에 대해 경고하는 원인이 무엇인지 정확히 어떻게 알 수 있습니까? (0) | 2020.11.01 |
---|---|
JUnit4 fail ()은 여기 있지만 pass ()는 어디에 있습니까? (0) | 2020.11.01 |
Internet Explorer 8에서 정의되지 않은 JSON 개체 (0) | 2020.11.01 |
HTTParty로 오류를 어떻게 처리 할 수 있습니까? (0) | 2020.11.01 |
select2에서 AJAX로 태그 지정 (0) | 2020.11.01 |