[SQL] SQL Server 2008의 매개 변수보기 만들기
SQLSQL Server 2008의 매개 변수보기 만들기
우리는 SQL Server 2008의 매개 변수보기를 만들 수 있습니다.
또는 이것에 대한 다른 대안?
해결법
-
==============================
1.인라인 테이블 반환 함수를 만들어보십시오. 예:
인라인 테이블 반환 함수를 만들어보십시오. 예:
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)
당신은 당신이 전혀 함수의 언급을 볼 수 없습니다 실제로 단지 기본 테이블이 조회되는 방법을 보여줍니다 선택에 대한 실행 계획을 볼 경우. 이 쿼리에 대한 실행 계획을 생성 할 때 사용되는 기본 테이블에 대한 통계를 의미로 좋다.
기본 테이블 통계 인해 가난한 실행 계획에 사용되지 않고 성능이 저하 될 수 피할 수있는 것은 다중 문 테이블 반환 함수 될 것이다. 방지하는 무엇의 예 :
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
미묘하게 다른,하지만 기능은 쿼리에 사용되는 성능에 잠재적으로 큰 차이.
-
==============================
2.아니 당신은 할 수 없습니다. 하지만 당신은 사용자 정의 테이블 함수를 만들 수 있습니다.
아니 당신은 할 수 없습니다. 하지만 당신은 사용자 정의 테이블 함수를 만들 수 있습니다.
-
==============================
3.사실 하나의 트릭이 존재한다 :
사실 하나의 트릭이 존재한다 :
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 쿼리에서 :
set context_info 2 select * from view_test
와 동일합니다
select * from table where id = 2
그러나 UDF를 사용하는 것이 더 허용
-
==============================
4.astander 언급했듯이, 당신은 UDF로 그렇게 할 수 있습니다. 그러나, (같은 인라인 테이블 함수 oppoosed) 스칼라 함수를 사용하여 큰 세트에 대한 성능 함수는 행 단위로 평가되는 악취 것이다. 다른 방법으로, 당신은 당신의 매개 변수 값에 대체 자리에 고정 된 쿼리를 실행 저장 프로 시저를 통해 동일한 결과를 노출 할 수있다.
astander 언급했듯이, 당신은 UDF로 그렇게 할 수 있습니다. 그러나, (같은 인라인 테이블 함수 oppoosed) 스칼라 함수를 사용하여 큰 세트에 대한 성능 함수는 행 단위로 평가되는 악취 것이다. 다른 방법으로, 당신은 당신의 매개 변수 값에 대체 자리에 고정 된 쿼리를 실행 저장 프로 시저를 통해 동일한 결과를 노출 할 수있다.
(다음은 스칼라 UDF에 대한 행 단위 처리에 다소 일자하지만 여전히 관련 기사입니다.)
편집 : 코멘트 다시. 성능을 저하은이 스칼라 UDF의 적용을 취소하도록 조정했다.
-
==============================
5.아니. 당신이 매개 변수를 전달할 수있는 당신은 UDF를 사용할 수 있습니다.
아니. 당신이 매개 변수를 전달할 수있는 당신은 UDF를 사용할 수 있습니다.
from https://stackoverflow.com/questions/4498364/create-parameterized-view-in-sql-server-2008 by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] org.postgresql.util.PSQLException : FATAL : 이미 미안 해요, 너무 많은 클라이언트 (0) | 2020.04.29 |
---|---|
[SQL] SQL Server의 역사를 테이블에 역사적 기록을 저장하는 방법 (0) | 2020.04.29 |
[SQL] MySQL은 매장 IP 주소에 가장 효율적인 방법 [중복] (0) | 2020.04.29 |
[SQL] Laravel 웅변 대 쿼리 빌더 - 사용 설득력이 성능을 저하하는 이유 [폐쇄] (0) | 2020.04.29 |
[SQL] SQL Server 데이터베이스 호출 멀티 스레딩 C # 응용 프로그램 (0) | 2020.04.29 |