起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2227|回复: 1

[结贴] resultSet2Table慢是什么原因.

[复制链接]

21

主题

70

帖子

356

积分

中级会员

Rank: 3Rank: 3

积分
356
QQ
发表于 2022-12-17 17:54:01 | 显示全部楼层 |阅读模式
版本: 其它(帖子中说明) 小版本号: 3.9
数据库: MS SQLServer 服务器操作系统: Windows 应用服务器: Tomcat
客户端操作系统: Windows 其它 浏览器: Chrome
本帖最后由 badnjcf 于 2022-12-19 10:18 编辑

有一个.select 结果 500多行.只要2秒多.
如果是这个结构如图!~~
无标题.png
执行到 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();
                }





21

主题

70

帖子

356

积分

中级会员

Rank: 3Rank: 3

积分
356
QQ
 楼主| 发表于 2022-12-19 10:34:47 | 显示全部楼层
解决了,就是需要重新编译存储过程!~~请结帖
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-2 04:29 , Processed in 0.096401 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表