2014-12-29 10 views
0

IBM Data Studio에서 저장 프로 시저를 설명하는 방법은 무엇입니까?db2 저장 프로 시저 설명

db2expln 명령이 있다는 것을 알고 있습니다. 그러나 그래픽 인터페이스에서 SP를 설명하는 솔루션이 필요합니다.

또한 쿼리를 선택한 다음 마우스 오른쪽 단추를 클릭하면 거기에 open visual explain 메뉴가 있지만 설명 할 수있는 SP에 대한 입력 값을 설정할 수있는 방법을 모르는 것을 알고 있습니다. 나는 당신의 요구 사항을 이해 한 경우

감사

+1

일반적으로 입력 값은 계획에 영향을주지 않습니다 (reopt 무시). sp를 디버그 할 방법을 찾고 있습니까? 참고로, db2exfmt는 db2expln보다 나은 도구라고 생각합니다. – Lennart

+0

실제로 디버깅하고 싶지 않습니다. SP에 대한 설명 만 있고 SP의 본문에 쿼리를 설명하면 입력 매개 변수가 있기 때문에 오류가 발생합니다. 많은 다른 커서와 매개 변수가있는 복잡한 SP입니다. – BzH

+1

아, 알겠습니다. 프로 시저에서 쿼리를 설명하려면 in-parameters를 매개 변수 마커 (?)로 바꿀 수 있습니다. 그런 다음 그 쿼리에 대한 설명을하십시오. – Lennart

답변

1

이 제대로 당신은 당신이 그 절차 내부 쿼리에 대한 계획을 설명하고자하는 절차가 있습니다. 나는 내 생각을 설명하는 몇 가지 가짜 물건을 발명하는 것 :

create table t 
( x int not null primary key 
, y int not null) @ 

create procedure p (n int) 
language sql 
begin 
    declare c cursor for 
    select count(1) from t where y = n; 
end @ 

커서의 쿼리에 대한 계획을 설명하고자하는 가정 : n을 결합되지 않기 때문에

db2 "explain plan for select count(1) from t where y = n" 
[...] 
SQL0206N "N" is not valid in the context where it is used. SQLSTATE=42703 

컴파일러가 불평 할 것이다 .

db2 "explain plan for select count(1) from t where y = :n" 

또는 그러나, 호스트 변수 또는 매개 변수 표시 n을 변경하면 (""유의) : 잘 될 것입니다

db2 "explain plan for select count(1) from t where y = ?" 

지금 당신이 계획을보고 db2exfmt 사용할 수 있습니다

db2exfmt -d sample -g -1 | tee q.plan 

Access Plan: 
----------- 
Total Cost:   0.00644873 
Query Degree:  1 

      Rows 
      RETURN 
      ( 1) 
      Cost 
      I/O 
      | 
       1 
      GRPBY 
      ( 2) 
      0.0063121 
       0 
      | 
       0 
      FETCH 
      ( 3) 
     0.00627372 
       0 
     /-----+-----\ 
     0    0 
    IXSCAN TABLE: LELLE 
    ( 4)    T 
0.00613403   Q1 
     0 
    | 
     0 
INDEX: SYSIBM 
SQL141230182649950 
     Q1 

난 당신, 당신은 당신의 계획에 대한 더 많은 정보를 얻을 것이다 db2exfmt에게 db2expln보다 훨씬 더 나은 도구를 찾을 것이라 생각합니다.

+0

내일 확인하고 결과를 알려 드리겠습니다. 고마워요 – BzH

+0

매개 변수 마커 내 문제가 해결되었습니다. 정말 고마워. 한 가지 더. 'db2explain'의 경우 쿼리를 강조 표시하고 마우스 오른쪽 버튼으로 클릭 한 다음'open visual explain '(그래픽 인터페이스 -IBM Visual Studio에서)을 클릭하십시오. 그래픽 인터페이스에서'db2exfmt'를 어떻게 할 수 있습니까? – BzH

+1

나는 너를 잘못 이해했을지도 모른다. 'db2expln'은 명령 행 도구이며,'db2exfmt'에 대해서도 마찬가지입니다. 따라서 그래픽 인터페이스에서'db2exfmt'를 실행할 수 없습니다. (필자는 명령 행 도구 만 사용하므로 확실하지 않습니다.) 좋은 소식은 시각적 인 설명이'db2exfmt'와 같은 내부 메커니즘을 사용하므로 동일한 세부 사항을 얻을 수 있다는 것입니다. – Lennart