2011-11-23 35 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) 

该解决方案使访问数据库服务器。