В моем процессе Tibco у меня есть логика, которая сопоставляет выходные данные SQL-запроса, только если запрос возвращает менее 1000 записей из активности Tibco «Direct SQL» или Tibco «JDBC Query».
На данный момент я просто запускаю один и тот же запрос 2 раза:
Select count(*) AS Count
FROM my_table
WHERE my_table.foo = 'bar'
если результат первого запроса меньше 1000, я вызываю тот же запрос для получения всех строк
Select my_table.*
FROM my_table
WHERE my_table.foo = 'bar'
Запрос довольно тяжелый, и я хочу запустить его только один раз для повышения производительности.
Я нашел решение со стороны SQL в Нужен подсчет строк после оператора SELECT: каков оптимальный подход к SQL?
Я могу использовать запрос типа:
SELECT my_table.*, count(*) OVER() AS Count
FROM my_table
WHERE my_table.foo = 'bar'
Проблема в том, что добавление count(*) к запросу также влияет на производительность.
Я могу сопоставить результат запроса с действием «Сопоставление данных», а затем использовать count($Map-Data/pfx:my_element/), но я предпочитаю избегать дополнительного ненужного сопоставления для повышения производительности.
Tibco "Direct SQL" и Tibco "JDBC Query" используют драйверы Oracle (ojdbc7.jar) и DB2 (jt400.jar).
Есть ли способ получить количество строк вывода запроса со стороны tibco, не добавляя количество к выводу запроса?
fetch first 1000 rows only
? - person a_horse_with_no_name   schedule 18.04.2018