2017-12-11 3 views
0

teiidを使用して、赤色シフトDBに対してかなり大きなSQL選択クエリを実行しています。私は私のクエリ内のクエリと内部のselect文を使用することを避けることにより、より良い応答時間を与えるために私のクエリを最適化しました。どのように私はクエリを実行すると、teiidクエリエンジンは、内側のクエリと内部のselect文を使用する別のバージョンに私のクエリを変更します。この動作をバイパスし、私が提供するクエリを直接使用する方法はありますか?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クエリエンジンは、セレクトインナ書

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 

を有するベローバージョンにクエリ上方変換私はknowhHowたいオリジナルteiidクエリできていますこの振る舞いを渡して元のクエリを実行しますか?

答えて

0

Teiidは特定の目的でのみインラインビューを作成します。可能であれば一般に削除します。インライン・ビューが必要な理由を理解できるように、ユーザー・クエリー、プロセッサー・プラン、またはデバッグ計画の詳細を提供する必要があります。

+0

詳細をつけて質問を編集しました – Sanjewa

+0

これはpg/redshiftトランスレータの問題であるようです。 supportsFunctionsInGroupByはtrueでなければなりません。 falseの場合、エンジンはインラインビューを作成して補正します。コードベースで修正する必要があります。問題をログに記録できますか?あなた自身のトランスレータエクステンショントランスレータの作成、委譲トランスレータの使用によるこの機能のオーバーライド、またはSQLをソースに直接送信する場合は直接/ネイティブクエリを使用するなどの回避策があります。 –

+0

ありがとう。私は問題を記録する。この問題を適切に再現するには時間がかかることがあります。私が終わったら、上の質問をサンプルクエリで編集します。そして私は問題を記録する。 – Sanjewa