2009년 8월 19일 수요일

DB2_012. EXPLAIN

EXPLAIN                                                                                

 EXPLAIN

  EXPLAIN 명령은 Explainable statement 의 접근 경로 선택에 관한 정보를 획득합니다. SELECT 문, INSERT 문, 또는 검색을 수행하게 하는 (즉, 조건문이 있는) UPDATE 문이나 DELETE 문이 Explainable statement 입니다. 이렇게 획득한 정보는 사용자가 만들어 놓은 plan table에 그 정보가 기록됩니다.

 

  선택적으로 EXPLAIN 문은 추가적인 두가지의 정보를 획득하여 각각의 테이블에 기록할 수 있습니다. 사용자가 만든 statement table 은 explainable statement 가 실행하는데 소요된 비용(estimated cost)에 관한 정보를 저장합니다. function table 은 explainable statement 가 참조한 사용자 정의 함수를 어떻게 풀어 나가는지에 대한 정보를 담아둡니다.

 

 SYNTAX

  EXPLAIN  [ PLAN | ALL ] (SET QUERYNO=integer) FOR explainable_sql_statement

 

  PLAN

       plan table에 explainable-sql-statement 가 실행중 각각의 단계에 관한 하나의 행을 집어

      넣습니다. 참조성 제약조건을 수행하는 단계는 포함되지 않습니다.

 

      statement table 이 존재하면 explainable statement 처리의 소요비용을 제공하는 행이

      statement table 에 저장됩니다.

 

      function table 이 존재한다면 explainable statement 에 있는 각각의 사용자 정의 함수에

      관한 행이 삽입됩니다.

 

  ALL

      PLAN 명령과 같은 효과를 냅니다.

 

  SET QUERYNO = integer

      explainable-sql-statement 의 번호를 정합니다. QUERYNO 열(column)은 EXPLAIN 구문

      에 의해 plan table, statement table, 혹은 function table 의 각 행에 주어진 값으로 저장됩

      니다. QUERYNO 가 정의되지 않으면 DB2는 스스로 번호를 할당합니다. EXPLAIN 구문에

      statement 번호는 프리컴파일러와 DBRM에 할당되어 있습니다.

 

  FOR explainable-sql-statement

      EXPLAIN 구문으로 확인하고자 하는 SQL문을 적어줍니다. 어떠한 SQL문도 explainable-

      sql-statement 가 될 수 있습니다. EXPLAIN 구문이 프로그램 내부에 있으면 호스트 변수를

      참조하게 됩니다. 만약 EXPLAIN 이 다이나믹하게 준비되었다면, 구문은 파라미터 마커를

      포함할 수 있습니다. 구문에 있는 호스트 변수는 구문이 있는 프로그램에 반드시 정의되어

      있어야 합니다.

 

 EXAMPLE

  EXPLAIN 문 작성)

  EXPLAIN PLAN SET QUERYNO=100

  FOR SELECT * FROM DB2TL002.TBL00209

            WHERE POLNO                =       ?

                 AND  DATA_FLAG    =       ?

 

  결과 확인)

  SELECT * FROM PLAN_TABLE WHERE QUERYNO = 100;

  SELECT * FROM DSN_STATEMENT_TABLE WHERE QUERYNO = 100;

 

PLAN TABLE

댓글 없음:

댓글 쓰기