java - 使用 JDBC 查询数据库的最有效方式?

标签 java sql join jdbc

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

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

表1数据1、表2数据1、表3数据1

表1数据1,表2数据2,表3数据1

表1数据1,表2数据1,表3数据2

表1数据1,表2数据2,表3数据2

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

最佳答案

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

关于java - 使用 JDBC 查询数据库的最有效方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9807415/

相关文章:

带有 LEFT JOIN 和 SUM GROUP BY 的 MySQL SELECT

java - 为什么 JScrollpane 没有添加到我的文本编辑器中的 JTextArea 中?

java - 如何在javaFX中扩展 Accordion 的多个TitledPane?

java - 如何使用DOM在JAVA中向xml文件添加多个属性值

php - 选择多个值 SQL

php - cakephp 加入和 mysql 加入

java - 调用静态方法时是否需要调用单独的方法?

python - Pandas to_sql() CREATE TABLE 权限被拒绝

sql - POSTGRES 将周列转为行?

mysql 连接未按预期工作