Механизм запросов Teiid изменяет оптимизированную версию моего запроса на неоптимизированный запрос при выполнении

Я выполняю довольно большие запросы на выборку SQL для БД с красным смещением, используя teiid. Я оптимизировал свой запрос, чтобы дать лучшее время ответа, избегая использования внутренних запросов и внутренних операторов выбора в моем запросе. Однако когда я выполняю запрос, механизм запросов 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 ответ

Teiid будет создавать встроенные представления только для определенных целей - обычно удаляет их, когда это возможно. Вам нужно будет предоставить больше контекста пользовательского запроса, плана процессора или плана отладки, чтобы мы могли понять, почему необходимы встроенные представления.

Другие вопросы по тегам