groovy sql eachRow和rows方法
技术问答
196 人阅读
|
0 人回复
|
2023-09-14
|
我是grails和groovy新手。谁能向我解释这两种?groovy sql方法之间的区别: I7 z* U5 u8 K0 m$ _( O( J2 e
sql.eachRowsql.rows另外,哪个更有效?
% i0 |0 G: Q# @. C我正在从数据库中开发一个检索数据(结果集很大),并将其写入其中CSV文件或返回JSON格式应用程序。
8 E5 T2 m0 o' W, R0 s8 g y' z我想知道上述两种方法中哪一种可以更快更有效地完成这个过程。
$ H" d. @' f' g" u2 B 1 _7 L7 n6 C: e1 M6 y5 k! `
解决方案:
% j5 t$ P3 {# B) \! ] W$ P 任何人都可以向我解释这两种常规sql方法sql.eachRow sql.rows之间的区别
( v2 D# F" o) r8 o% E9 R) V6 S因为每种方法都有大量的重载版本,所以很难准确确定你想引用的两种方法。然而,在所有情况下,eachRow不返回任何内容* V: y, e6 m% h8 V
void eachRow(String sql,Closure closure)而rows返回行列表( J2 f% y3 ]; j, S/ |9 z
List rows(String sql)因此,如果使用eachRow,作为第二个参数输入的封闭包应处理每一行,例如6 ]1 [) t$ I1 g3 ~$ _
sql.eachRow("select * from PERSON where lastname = 'murphy'") { row -> println "$row.firstname"}而如果使用rows行,则返回行,因此应由调用方处理,如
( h' ]% ]; J( _& ^; jrows("select * from PERSON where lastname = 'murphy'").each {row -> println "$row.firstname" 另外,哪个更有效?
- s" Z6 [2 S" x; l0 c这个问题几乎无法回答。即使我自己实现了这些方法,我也不知道哪种方法 对您 会更好 , 因为我不知道! R% T4 @" ^5 Q7 H( z
你在用什么硬件?' g$ ?7 q) P. a. Y8 Z) u
您要定位的JVM
! B5 s2 U6 i" y" V( _你在用什么版本?Groovy" Q2 v5 D3 L8 ]9 G
您将传递哪些参数?9 ^' l2 N2 f0 z6 b. t9 w+ X5 b
该方法是否成为应用程序性能的瓶颈?或者其他不能直接从源代码确定的影响方法性能的因素。你可以得到一个有用的答案,这是唯一更有效的方法对你 通过测量每个性能。
1 n" }0 a A4 G尽管上面已经说了很多,但是如果两者之间的性能差异有任何重大变化,我会感到惊讶,因此,如果我是您,我会选择您认为更方便的任何一个。如果以后发现此方法是性能瓶颈,请尝试使用另一个方法(但是我打赌您要花一美元到一毛钱,这没什么关系)。 |
|
|
|
|
|