使用JDBC查询数据库的最佳方式?

时间:2012-03-21 15:13:20

标签: java sql join jdbc

我需要从几个表中获取数据,所以我使用了一个带有N个左外连接的查询。在我看来,由于我获得了大量数据的笛卡尔积,因此可能会浪费性能。为了获得更好的性能,哪种方法更可取?我正在考虑做N + 1次小查询。我是在正确的轨道上吗?

我知道,这与JDBC细节没什么关系。我想从单个表中检索数据,并将左外连接到其他N个表。结果集非常大,因为我得到了一个笛卡尔积。例如:

table1data1,table2data1,table3data1

table1data1,table2data2,table3data1

table1data1,table2data1,table3data2

table1data1,table2data2,table3data2

我知道如果对数据库进行多次查询(例如在我的示例中,我获得了table1的1条记录,表2的2条记录和表2的2条记录),我将对数据库进行大量的往返。但我已经用这种方式进行了测试,看起来要快得多。

2 个答案:

答案 0 :(得分:1)

这确实不是JDBC特有的。一般来说,根据返回的数据量,您将获得在单个结果集中检索所有内容的更好性能。 N + 1个查询往往会导致大量往返数据库。结果集是否包含您不需要的字段?你可以修剪返回的列吗?如果可能的话,这将是第一步。

答案 1 :(得分:0)

我认为您目前在一次数据库中获取大量数据的方法是正确的方法。但是,如果您发现自己使用不同的参数多次执行相同的查询,则使用绑定变量将其编写为存储过程会更高效。但我绝对会害羞地将你的JOIN分成几个较小的查询。