0
我在7-10个独立的表上有一个父行和子行,用一个唯一的键将子表上的行绑定到父行。对于搜索功能,我需要根据父表中的数据查询来检索父代和所有匹配的子代行。最多有5000个匹配的父行。目前,我们正在重新运行查询对每个子表,如:如何在DB2中为父行的特定子集获取子行?
select data from child
where key in (select key from parent where search_criteria)
这似乎是相当不雅尤其是我们继续添加更多的子表。在DB2中有更好的方法吗?
我的一些想法:
- 威尔DB2重用,结果选择?那么如果有大量的查询呢?
- 我知道父查询后的关键字,所以我可以将它们传递给SQL,但SQL会因5000个关键点而变得疯狂,并且可能超过了SQL限制。
- 将密钥存储为临时表是否值得,或者设置/拆卸过多?
什么是消费这些数据?它是前端还是某种后端处理系统? –
它是一个前端,最终用户正在生成查询(间接地,而不是通过提供SQL)。 –
是否有某些原因,您没有一次性从所有子表中获取结果?一次获得一个文件(本地I/O,尤其是SQL)通常不是最好的方式 - 尽管有时它是唯一的方法。我不认为DB2会缓存内部选择的结果 - 如果我没有记错的话,你可能会从显式连接中获得更好的性能。如果您仍然需要单独查询子表,那么将键存储在“GLOBAL TEMPORARY”表中可以正常工作(创建表时插入数据,不会从程序加载)。 –