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」表中可以正常工作(創建表時插入數據,不會從程序加載)。 –