在我的 Tibco 流程中,只有当查询从 Tibco“Direct SQL”或 Tibco“JDBC Query”活动返回少于 1000 条记录时,我才有映射 SQL 查询输出的逻辑。
现在我只是运行相同的查询 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'
该查询非常繁重,出于性能目的,我只想运行一次。
我在 SELECT 语句后需要行计数中找到了 SQL 方面的解决方案:什么是最佳 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 端获取查询输出行数?