|
版本: |
其它(帖子中说明) |
小版本号: |
3.9 |
|
|
数据库: |
MS SQLServer |
服务器操作系统: |
Windows |
应用服务器: |
Tomcat |
客户端操作系统: |
Windows 其它 |
浏览器: |
Chrome |
|
|
本帖最后由 badnjcf 于 2022-12-19 10:18 编辑
有一个.select 结果 500多行.只要2秒多.
如果是这个结构如图!~~
执行到 stat.getResultSet(); 还是挺快的..
resultSet2Table这一步很慢.大概要30多秒为什么...?平时都挺快的.
我找出来是SQL 语句有 ROW_NUMBER() over (order by JOBMAT.item_no,JOB_NO)这样去掉就快了..为什么.在SQL执行是快的..
用org.apache.tomcat.dbcp.dbcp2.DelegatingResultSet@1da71ce[resultSet=org.apache.tomcat.dbcp.dbcp2.DelegatingResultSet@1118c90[resultSet=net.sourceforge.jtds.jdbc.JtdsResultSet@6185a4, statement={call EXECPROC(?)}, connection=null], statement={call EXECPROC(?)}, connection=null]
连接就慢?
后又发现,不是ROW_NUMBER() over (order by JOBMAT.item_no,JOB_NO)的原因...是因为重新保存存储过程就快了...
这种情况时有发生...都是重新保存一下就好了...
问一下是哪里的问题....
就像https://www.debugease.com/mssqlbasic/976568.html这个人帖子说的一样问题...
Connection conn = ModelUtils.getConnectionInTransaction("/E2018/BASE/data");
CallableStatement stat = conn.prepareCall(proc);
try {
for (int i = 0; i < size; i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String param = jsonObject.getString("param");
if (param == null) {
stat.setNull(i + 1, Types.VARCHAR);
} else {
stat.setString(i + 1, param);
}
}
stat.execute();
ResultSet rs = stat.getResultSet();
Table table = null;
if (rs != null) {
table = BizUtils.resultSet2Table(rs, "/E2018/BASE/data");
// 分页
if(limit != -1){setPage(table, offset, limit);};
if(primaryKey!=null){
table.getProperties().put(Table.PROP_NAME_ROWID, primaryKey);}
//}// 设置主键列
}
return table;
} finally {
stat.close();
}
|
|