要检查多个表(10 - 15 个表)中是否存在 Id,最好的选择是什么?在性能方面。
- 使用联接
- 对每个表使用单独的查询(从 Spring 的 DAO 调用)。
- 使用存在。
需要根据来自多个表的 Id 的存在来做出决定。
要检查多个表(10 - 15 个表)中是否存在 Id,最好的选择是什么?在性能方面。
需要根据来自多个表的 Id 的存在来做出决定。
您可以使用解释计划(例如使用 Oracle sql developer)测量 oracle 中查询之间的性能,并编写一些简单的 java 类来查看与 DAO 相比需要多长时间。
当您使用 exists Oracle 将使用您的 pk 和 fk 索引,您将在数据库中的一个查询中完成所有操作。我认为这是最好的选择,但是如果您将它们进行比较,您将获得准确的选择。
使用 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)
此解决方案访问数据库服务器。