我试图用sql.rows()Groovy方法获取一些数据,并且返回这些值需要很长时间。
所以我尝试了“标准”方式,速度要快得多(快150倍)。
我错过了什么?
看下面的代码:第一种方法返回结果大约2500毫秒,第二种方法返回15毫秒!
class MyService {
javax.sql.DataSource dataSource
def SQL_QUERY = "select M_FIRSTNAME as firstname, M_LASTNAME as lastname, M_NATIONALITY as country from CT_PLAYER order by M_ID asc";
def getPlayers1(int offset, int maxRows)
{
def t = System.currentTimeMillis()
def sql = new Sql(dataSource)
def rows = sql.rows(SQL_QUERY, offset, maxRows)
println "time1 : ${System.currentTimeMillis()-t}"
return rows
}
def getPlayers2(int offset, int maxRows)
{
def t = System.currentTimeMillis();
Connection connection = dataSource.getConnection();
Statement statement = connection.createStatement();
statement.setMaxRows(offset + maxRows -1);
ResultSet resultSet = statement.executeQuery(SQL_QUERY);
def l_list =[];
if(resultSet.absolute(offset)) {
while (true) {
l_list << [
'firstname':resultSet.getString('firstname'),
'lastname' :resultSet.getString('lastname'),
'country' :resultSet.getString('country')
];
if(!resultSet.next()) break;
}
}
resultSet.close()
statement.close()
connection.close()
println "time2 : ${System.currentTimeMillis()-t}"
return l_list
}
在使用Groovy的sql.rows()方法从数据库获取数据时,发现其性能较慢,对比之下,通过标准的JDBC方式(直接操作Connection和Statement)速度提升了150倍。代码示例显示,使用sql.rows()方法耗时约2500毫秒,而传统方式仅需15毫秒。问题在于,如何解释和优化Groovy的sql.rows()方法的性能问题。
222

被折叠的 条评论
为什么被折叠?



