2017-09-12 1 views
0

DBMS (제 경우에는 포스트 그레스)가 실행 계획 및 준비된 명령문을 어떻게 처리합니까?준비된 명령문 실행 계획을 얻는 방법은 무엇입니까?

쿼리의 매개 변수는 주로 데이터 통계로 인해 실행 계획에 큰 영향을 줄 수 있습니다. 그것은 어떤 경우에 선호 할 수

데이터가 잘 분산되어있는 경우 인덱스를 사용하지만 매개 변수가 판별하지 않기 때문에 특정 값을 순차적 스캔을 선호

(매개 변수는 테이블 행의> 10 % 일치 보통 때) 문을 준비하는 경우 내가 궁금

는 항상 성능을 향상 시키거나 경우에 할 수있는 좋은 방법입니다 그것은 더 "최선의 노력"사전에

감사의 종류

편집 : 내 관심사는 자주 같은 쿼리를 실행에 관한 것입니다 , 그러나 다른 매개 변수와 함께 실행 계획을 변경해야 할 수도 있습니다. 준비된 명령문의 성능 향상을 측정하는 것은 매우 어렵습니다. 항상 가장 정확한 실행 계획을 가지고 있습니다.

답변

1

준비된 명령문은 동일한 간단한 쿼리를 반복적으로 실행하는 훌륭한 방법입니다. 예를 들면, OTOH

insert into table values ($1,$2,$3); 

같은 WHERE 절에 무엇이 데이터 세트가에 따라 변경 될 경우, 큰 추악한 복잡한보고 쿼리 실행 속도가 할 수있는 좋은 방법이 아닙니다.

준비된 쿼리의 전체적인 요점은 쿼리 계획의 다소 고비용 단계를 반복해서 저장하는 것입니다. 위에 열거 한 간단한 인서트에 대해 1,000 회 실행하면 계획 원가가 합산됩니다.

큰 복잡한보고 쿼리의 경우, 계획 시간은 중요하지 않습니다. 가장 큰보고 쿼리 등은 몇 초에서 몇 시간까지 걸릴 수 있습니다. 밀리 초 단위로 측정 한 계획 시간은 여기서 걱정할 가치가 없습니다.

관련 문제