티스토리 뷰

반응형

맙소사..인포믹스 12.10.xC2 버전부터 쿼리 플랜을 확인하는 함수가 이미 있었네요. InformixHQ의 Schema Manager에서 쿼리 플랜을 확인하다가 알게되었습니다. 문서화가 되어있었다면 좋았을텐데.. 아래는 ifx_explain 함수를 사용해 쿼리 플랜을 출력한 예제입니다.

> execute function ifx_explain( 'select * from systables' );



(expression)
              QUERY: (OPTIMIZATION TIMESTAMP: 06-29-2020 23:12:56)
              ------
              select * from systables

              Estimated Cost: 18
              Estimated # of Rows Returned: 266

                1) informix.systables: SEQUENTIAL SCAN

다음은 bson_explain 함수를 사용한 예제입니다. 내용이 JSON 형식으로 출력됩니다.

> SELECT bson_explain( "select * from systables where tabid=99" )::JSON from sysmaster:sysdual;



(expression)  {"version":1,"explain":"
              QUERY: (OPTIMIZATION TIMESTAMP: 06-30-2020 09:05:47)
              ------
              select * from systables where tabid=99

              Estimated Cost: 1
              Estimated # of Rows Returned: 1

                1) informix.systables: INDEX PATH

                  (1) Index Name: informix.tabid
                      Index Keys: tabid
                      Lower Index Filter: informix.systables.tabid = 99

              "}

이 함수의 단점이라면 쿼리 통계가 보이지 않는다는 것입니다. 플랜을 확인하려는 SQL은 실제 수행되지 않고 AVOID_EXECUTE 옵션으로 실행되는 것 같습니다. 그래서 이번 14.10.xC4부터 쿼리 통계까지 보여주는 getExplain 함수가 별도로 제공되는 것 같습니다.

 

이제 12버전을 사용하는 곳에서는 아래처럼 클라이언트 툴에서도 쿼리 플랜을 볼 수 있겠군요.

반응형
댓글