Механизм запросов 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 будет создавать встроенные представления только для определенных целей - обычно удаляет их, когда это возможно. Вам нужно будет предоставить больше контекста пользовательского запроса, плана процессора или плана отладки, чтобы мы могли понять, почему необходимы встроенные представления.