我想知道哪种查询样式更好更有效

我正在使用jdbc从多个表中获取数据(我有十多个表来获取数据)。所有数据都与键相关

为此,我正在考虑两种方法

1)我正在使用联接从数据库中获取数据

Query s="select a.*,b.*,c.*......";//fetchin all data using joins in single query

Preparedstatement ps = con.prepareStatement(query);//con is a connection object
ResultSet res = ps.executeQuery();
//fetching data from resultset res
con.close();


2)我正在从每个单独的表中获取数据

Query s="select from table a";
Preparedstatement ps = con.prepareStatement(s);
ResultSet res = ps.executeQuery();
//fetching data from resultset res
Query s1="select from table b";
Preparedstatement ps1 = con.prepareStatement(s1);
ResultSet res1 = ps1.executeQuery();
//fetching data from resultset res1
.............
//continue for all remaining tables
con.close();


我想知道是否还有其他/更好的方法。

编辑:我正在使用非常大量的数据。 Hibernet其他方法呢

最佳答案

我认为最好的方法是在一条语句中处理所有SQL内容。如您建议的版本1)。如果在Java源代码中这对您来说太复杂了,那么您可以在数据库中使用存储的函数(我只知道Oracle / MySQL的可能性)并在那里处理更复杂的语句。在Java中,您仅调用存储的函数/过程并使用Java处理结果。这对我来说很好。

另一种可能性是使用Hibernate之类的ORM。但是对于小事情,这将是过分的:)

通过1),可以适当地与存储的功能结合使用,但并非真正必要,您可以让数据库缓存您的语句并获得imho最佳性能。如果您在方法2)中一个接一个地加载表,则必须处理数据并将其存储。那可能不是那么有效。

10-07 16:56
查看更多