在我的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'
查询非常繁重,我只想运行一次以达到性能目的。
我在Need a row count after SELECT statement: what's the optimal SQL approach?
中找到了SQL端的解决方案我可以使用如下查询:
SELECT my_table.*, count(*) OVER() AS Count
FROM my_table
WHERE my_table.foo = 'bar'
问题是在查询中添加count(*)也会影响性能。
我可以将查询结果映射到“地图数据”活动,然后使用count($ Map-Data / pfx:my_element /),但我更愿意为了性能目的而避免额外的不需要maping。
Tibco“Direct SQL”和Tibco“JDBC Query”正在使用Oracle(ojdbc7.jar)和DB2(jt400.jar)驱动程序。
有没有办法从tibco端获取查询输出行数而不向查询输出添加计数?