Java 在SQL或代码中更好地分组聚合数据(在性能方面)

Java 在SQL或代码中更好地分组聚合数据(在性能方面),java,sql,aggregate,group-concat,Java,Sql,Aggregate,Group Concat,我想就通过串接字符串生成聚合数据征求意见。如果我有一个聚合列,但我想在聚合列中连接,那么在性能方面哪一个更快?执行一个SQL,然后在代码中聚合。或者选择主数据,然后一次查询一个 例如: TABLE_A COL_A_1 COL_A_2 A a B b C c TABLE_B COL_B_1 COL_B_2 a Text1 a

我想就通过串接字符串生成聚合数据征求意见。如果我有一个聚合列,但我想在聚合列中连接,那么在性能方面哪一个更快?执行一个SQL,然后在代码中聚合。或者选择主数据,然后一次查询一个

例如:

TABLE_A        
COL_A_1         COL_A_2
A               a
B               b
C               c

TABLE_B
COL_B_1         COL_B_2
a               Text1
a               Text2
a               Text3
b               Text4
b               Text5
该表在COL_A_2=COL_B_1处联接,聚合列为COL_B_2

选项1(执行一个SQL)

然后在代码中,只需循环结果集并聚合COL_B_1。(例如使用Java)

选项2(执行多个SQL)

然后为每个输入代码选择(例如Java)

我通常会选择选项1,因为我认为使用多个SQL select可能代价高昂。但我对此不确定。但是有没有其他方法可以进行这种聚合呢。我已经搜索了网络,在标准SQL中没有字符串连接聚合。此外,TableA上的说明过于简化,通常TableA是多个表连接在一起的复杂查询,TableB也是如此

我通常会选择选项1,因为我认为进行多个SQL选择代价高昂

你是对的-访问数据库的次数应该尽可能少

组连接是可能的,但MySQL从4.1开始就有了。使用SQL Server,您可以使用:

SELECT @out = COALESCE(@out + ',' + t.column, t.column)
  FROM TABLE t
检查一个应该在Oracle 9i+中工作的示例

我通常会选择选项1,因为我认为进行多个SQL选择代价高昂

你是对的-访问数据库的次数应该尽可能少

组连接是可能的,但MySQL从4.1开始就有了。使用SQL Server,您可以使用:

SELECT @out = COALESCE(@out + ',' + t.column, t.column)
  FROM TABLE t
检查一个应该在Oracle 9i+中工作的示例

SELECT TABLE_1.COL_A_1, TABLE_1.COL_A_2
FROM TABLE_A 
ORDER BY TABLE_1.COL_A_1
for (InfoEntity info : infoList) {
  // Select TableB entity based on info.colA2
  ...
  tableBList = dao.selectTableB(info.colA2);
  ...
  for (TableBEntity b : tableBList) {
    info.colB2 += b.colB2;
  }
}
SELECT @out = COALESCE(@out + ',' + t.column, t.column)
  FROM TABLE t