2017-12-11 15 views
0

teiid를 사용하여 적색 편이 DB에 대해 상당히 큰 SQL 선택 쿼리를 실행하고 있습니다. 내 쿼리에서 내부 쿼리와 내부 select 문을 사용하지 않아도 응답 시간을 단축하도록 쿼리를 최적화했습니다. 어떻게하면 쿼리를 실행할 때, 내부 쿼리 및 내부 선택 문을 사용하는 다른 버전으로 내 쿼리를 변경 teiid 쿼리 엔진. 이 동작을 무시하고 내가 제공 한 쿼리를 직접 사용할 수있는 방법이 있습니까? Teiid 쿼리 엔진은 실행시 쿼리의 최적화 버전을 최적화되지 않은 쿼리로 수정합니다.

그녀이다 I 실행 일본어 teiid 쿼리

 CREATE VIRTUAL PROCEDURE GetTop() RETURNS (json clob) OPTIONS (UPDATECOUNT 0, "REST:METHOD" 'GET', "REST:URI" 'GetTop') 
     AS 
     /*+ cache(pref_mem ttl:14400000) */ 
     BEGIN 
      execute immediate 
      'SELECT JSONOBJECT(
       JSONARRAY_AGG(
        JSONOBJECT(
         total_purchases, 
         total_invoice, 
         total_records, 
         period 
        ) 
       ) 
       AS "dd" 

      ) as json FROM(
       SELECT SUM((CASE 


      GROUP BY period 

Teiid 쿼리 엔진 I에 의해 I를 knowhHow 수하고자

SELECT SUM(v_0.c_1), 
     COUNT(DISTINCT v_0.c_2), 
     COUNT(v_0.c_2), 
     v_0.c_0 
FROM (SELECT CASE 

GROUP BY v_0.c_0 

내부 SELECT 문이 벨로 버전으로 쿼리 상기 변환 이 동작을 전달하고 원래 쿼리를 실행합니까?

답변

0

Teiid는 특정 목적을 위해서만 인라인 뷰를 생성합니다 - 가능한 경우 일반적으로 제거합니다. 인라인 뷰가 필요한 이유를 이해할 수 있도록 사용자 쿼리, 프로세서 계획 또는 디버그 계획에 대한 추가 컨텍스트를 제공해야합니다.

+0

자세한 내용으로 질문을 수정했습니다. – Sanjewa

+0

이것은 pg/redshift 변환기의 문제인 것으로 보입니다. supportsFunctionsInGroupBy가 true 여야합니다. false로 엔진은 보상 할 인라인 뷰를 생성합니다. 코드 기반에서이를 수정해야합니다 - 문제를 기록 할 수 있습니까? 자신 만의 변환기 확장 변환기를 작성하거나, 위임 변환기를 사용하여이 기능을 대체하거나, SQL을 소스로 직접 보내려는 경우 직접/원시 (direct/native) 조회를 사용하는 등의 일시적인 해결책이 있습니다. –

+0

감사합니다. 나는 문제를 기록 할 것이다. 이 문제를 올바르게 재현하려면 시간이 필요합니다. 일단 끝나면 샘플 쿼리로 위 질문을 편집합니다. 그리고 문제를 기록 할 것입니다. – Sanjewa