Teiid Query引擎在执行时将我的Query的优化版本修改为未优化的查询

时间:2017-12-11 11:28:45

标签: teiid redhat-datavirt

我正在使用teiid对redshift 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语句

的波纹管版本
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

我想知道如何通过此行为并执行原始查询?

1 个答案:

答案 0 :(得分:0)

Teiid只会为特定目的创建内联视图 - 它通常会在可能的情况下删除它们。您需要提供更多用户查询,处理器计划或调试计划的上下文,以便我们了解为什么需要内联视图。