2011-11-23 88 views
-1

要檢查多個表(10 - 15個表)中是否存在Id,最佳選擇是什麼?在表現方面。檢查多個表中是否存在數據

  1. 使用連接
  2. 使用每個表單獨的查詢(稱爲從DAO春)。
  3. 使用存在。

需要根據多個表中是否存在Id來做出決定。

+0

你想要什麼結果?你想知道它所在的桌子,或者只是它在任何桌子上,或者它在所有桌子上? – Maess

+0

更多架構數據請參考:S – osdamv

+0

我只想檢查一個值是否存在於很多表中。需要在表中存在來自java的參數傳遞的值。 – minil

回答

0

您可以使用解釋計劃(例如使用Oracle sql developer)測量oracle中查詢之間的性能,並編寫一些簡單的java類來查看與DAO相比需要多長時間。

當您使用exists時,Oracle將使用您的pk和fk索引,並且您將在數據庫中的一個查詢中執行所有操作。我認爲這是最好的選擇,但如果你比較它們,你會有準確的選擇。

0

使用UNION ALL:

SELECT 'table1' FROM table1 WHERE id = ? 
UNION ALL 
SELECT 'table2' FROM table2 WHERE id = ? 
UNION ALL 
SELECT 'table3' FROM table3 WHERE id = ? 

另一種解決方案是使用功能:

select function(id) 

該解決方案使訪問數據庫服務器。