이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 윈 토토버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

토토 캔

이름

토토 캔-실행 진술 토토 캔

시놉시스

토토 캔이름[(data_type[, ...])] as성명서

설명

토토 캔토토 캔된 진술을 만듭니다. 에이 토토 캔 문은 사용될 수있는 서버 측 개체입니다. 성능을 최적화하십시오. 때토토 캔명령문이 실행되고 지정된 진술이 구문 분석, 분석, 다시 작성했습니다.execute명령입니다 그 후 발행 된, 토토 캔된 진술은 계획되어 있습니다 실행. 이 노동 부서는 반복적 인 구문 분석을 피합니다 실행 계획이 특정에 의존하도록 허용하면서 제공된 매개 변수 값.

토토 캔된 진술은 매개 변수를 취할 수 있습니다 : 값 성명서가 실행될 때 진술로 대체되었습니다. 생성 할 때 토토 캔된 진술은 위치별로 매개 변수를 참조합니다.$ 1, $ 2등 a 해당 매개 변수 데이터 유형 목록은 선택적으로 될 수 있습니다 지정되었습니다. 매개 변수의 데이터 유형이 지정되지 않았거나 로 선언알 수없는, 유형이 추론됩니다 매개 변수가 처음 사용되는 컨텍스트에서 가능한). 명령문을 실행할 때 실제 값을 지정하십시오 의 이러한 매개 변수의 경우execute진술. 참조토토 결과 : 문서 : 9.3 : execute더 많은 것 그것에 대한 정보.

토토 캔된 진술은 현재의 지속 시간에 대해서만 지속됩니다. 데이터베이스 세션. 세션이 종료되면 토토 캔된 진술은 다음과 같습니다 잊혀 져서 다시 사용하기 전에 다시 만들어야합니다. 이것 또한 단일 토토 캔된 진술은 여러 동시 데이터베이스 클라이언트; 그러나 각 고객은 할 수 있습니다 사용할 토토 캔된 진술을 작성하십시오. 토토 캔된 진술은 할 수 있습니다 를 사용하여 수동으로 정리하십시오.딜 로이징명령.

토토 캔된 진술은 가장 큰 성능 이점을 가지고 있습니다 단일 세션은 다수의 유사한 수를 실행하는 데 사용됩니다. 진술. 성능 차이가 특히 있습니다 진술이 계획하거나 재 작성하기에 복잡한 경우 중요합니다. 예를 들어, 쿼리에 많은 테이블의 결합이 포함되거나 필요한 경우 여러 규칙의 적용. 진술이 비교적 인 경우 계획 및 재 작성 간단하지만 실행하는 데 비교적 비용이 많이 듭니다. 토토 캔된 진술의 성능 장점은 줄어 듭니다 눈에 띄는.

매개 변수

이름

이 특정 토토 캔 진술에 주어진 임의의 이름. 단일 세션 내에서 독특해야하며 이후에 사용됩니다. 이전에 토토 캔된 진술을 실행하거나 거래하려면

data_type

토토 캔 된 문에 대한 매개 변수의 데이터 유형. 만약 특정 매개 변수의 데이터 유형이 지정되지 않거나 지정됩니다. 처럼알 수없는, 그것은 추론됩니다 매개 변수가 처음 사용되는 컨텍스트. 참조 토토 캔된 명령문 자체의 매개 변수, use$ 1, $ 2

진술

anyselect, 삽입, 업데이트, 삭제또는진술.

노트

토토 캔된 명령문이 충분한 시간에 실행되면 서버는 결국 결국 매번 재 플래닝. 토토 캔된 경우 즉시 발생합니다 진술에는 매개 변수가 없습니다. 그렇지 않으면 경우에만 발생합니다 일반 계획은 계획보다 훨씬 비싸지 않은 것으로 보입니다. 특정 매개 변수 값에 따라 다릅니다. 일반적으로 일반적인 계획 쿼리의 성능이 추정되는 경우에만 선택됩니다. 제공된 특정 매개 변수 값에 상당히 둔감합니다.

쿼리 계획을 검토하려면PostgreSQL토토 캔된 진술에 사용 중입니다. 사용PostgreSQL : 문서 : 9.3 : 와이즈 토토. 일반 계획이있는 경우 사용, 매개 변수 기호가 포함됩니다$n계획은 현재 실제 매개 변수 값을 대체합니다. 그것.

쿼리 계획 및 통계에 대한 자세한 내용 수집PostgreSQL목적, 참조PostgreSQL : 문서 : 9.3 : 토토 커뮤니티문서.

토토 캔된 진술의 주요 요점은 피하는 것입니다. 진술의 반복 된 구문 분석 및 계획,PostgreSQL재현을 강제로 할 것입니다 데이터베이스를 사용할 때마다 사용하기 전에 명령문의 다시 계획 진술에 사용 된 객체는 정의 (DDL)를 겪었습니다. 토토 캔된 진술의 이전 사용 이후 변경. 또한 IF 의 값search_path하나의 사용에서 다음 사용으로 변경하면 진술이 다시 표시됩니다. 새로운 사용search_path. (후자 행동은 새로운 것입니다PostgreSQL9.3.)이 규칙은 토토 캔된 진술을 의미 적으로 사용합니다. 동일한 쿼리 텍스트를 다시 제출하는 것과 거의 동일하며 Over, 그러나 객체 정의가없는 경우 성능 이점이 있습니다. 특히 최상의 계획이 용도로 동일하게 유지되는 경우 변경되었습니다. 의미 적 동등성이 완벽하지 않은 경우의 예 성명서가 자격이없는 이름으로 테이블을 언급하는 경우입니다. 그런 다음 같은 이름의 새 테이블이 스키마에서 생성됩니다. 이전에 나타납니다.search_path, no 명령문에 사용 된 객체가 없으므로 자동 리바스가 발생합니다. 변경. 그러나 다른 변화가 다시 부드러워지면 새로운 테이블은 후속 용도로 참조됩니다.

세션에서 제공되는 모든 토토 캔된 진술을 볼 수 있습니다. 쿼리토토 사이트 추천 : 문서 : 9.3 :시스템보기

an에 대한 토토 캔된 진술 만들기삽입진술을 수행 한 다음 실행 :

Fooplan 토토 캔 (int, 텍스트, 부, 숫자) AS
    foo 값에 삽입 ($ 1, $ 2, $ 3, $ 4);
Fooplan (1, 'Hunter Valley', 'T', 200.00);

a에 대한 토토 캔된 진술 만들기select진술을 수행 한 다음 실행 :

usrptplan (int)을 토토 캔하십시오
    선택 *에서 사용자 u, logs l where u.usrid = $ 1 및 u.usrid = l.usrid를 선택하십시오.
    및 l.date = $ 2;
usrrptplan (1, current_date); 실행

두 번째 매개 변수의 데이터 유형은 지정되어 있으므로 컨텍스트에서 추론됩니다$ 2사용됩니다.

호환성

SQL 표준에는 a가 포함됩니다.토토 캔명령문이지만 임베디드 SQL에만 사용됩니다. 이 버전의 그만큼토토 캔Statement도 다소 사용합니다 다른 구문.