我正在支持一個Grails Web應用程序,它爲使用AmCharts的客戶端顯示不同的視覺效果。在其中一個選項卡上有三個圖表,每個圖表根據不同的度量從數據庫中返回前十名,因此只有十行。需要4-5次或者更多的時間才能完成。查詢在10秒內在數據庫上運行。Groovy中的sql.rows()運行緩慢
以下服務方法被調用返回的結果:
List fetchTopPages(params, Map querySettings, String orderClause) {
if(!((params['country'] && params['country'].size() > 0) || (params['brand'] && params['brand'].size() > 0) || (params['url'] && params['url'].size() > 0))) {
throw new RuntimeException('Filters country or brand or url not selected.')
}
Sql sql = new Sql(dataSource)
sql.withStatement { stmt -> stmt.fetchSize = 100 }
Map filterParams = acquisitionService.getDateFilters(params, querySettings)
ParamUtils.addWhereArgs(params, filterParams)
String query = "This is where the query is"
ParamUtils.saveQueryInRequest(ParamUtils.prettyPrintQuery(query, filterParams))
log.debug("engagement pageviews-by-source query: " + ParamUtils.prettyPrintQuery(query, filterParams))
List rows = sql.rows(query, filterParams)
rows
}
經過一番調查,很明顯的是,List rows = sql.rows(query, filterParams)
行是一個佔用了這個加載時間。
有沒有人以前曾經遇到過這個問題?爲什麼sql.rows()在只返回10行結果時花了這麼長時間,並且查詢在數據庫端的運行速度非常快?
附加信息:
DB:FSL1D以下對DB側命令
運行:java -jar ojdbc5.jar - getversion
回報: 「甲骨文11.2.0.3.0 JDBC 3.0 JDK5編上Thu_Jul_11_15:41:55_PDT_2013 默認連接屬性資源 週三12月16日八時十八分32秒EST 2015"
Groovy的版本:2.3.7 Grails的版本:41年2月4日 JDK:1.7.0
爲了讓更多的具體的答案請發表您的數據庫,JDBC驅動程序和Groovy + JDK版本 –
DB:FSL1D 在DB側 運行以下命令:'Java的罐子ojdbc5.jar - getversion'回報: 的Oracle 11.2.0.3 .0 JDBC 3。0與JDK5上Thu_Jul_11_15編譯:41:55_PDT_2013 #默認連接屬性資源 #Wed年12月16八時18分32秒EST 2015 Groovy的版本:2.3.7 Grails的版本:41年2月4日 JDK:1.7.0 – krizsa
謝謝,我會嘗試設置你的場景。有一個類似的問題[這裏](http://stackoverflow.com/questions/9923981/why-sql-rows-groovy-method-is-so-slow),但沒有一個明確的答案。 –