String sqlStr = "SELECT sum(a.welfr_money) welfmoney ,b.project_name " +
"FROM t_prsn_wlfr_detl a " +
"LEFT JOIN t_project b " +
"ON a.projectid = b.ID " +
"WHERE a.prsnid = ? AND " +
"a.paydate> = ? AND " +
"a.paydate <= ? AND " +
"a.publish_statusid= 1 " +
"GROUP BY b.project_name ";
clssPstmt = m_clssCnn.prepareStatement(sqlStr);
clssPstmt.setInt(1, iUserID);
clssPstmt.setDate(2, clssBeginDate);
clssPstmt.setDate(3, clssEndDate);
clssRs = clssPstmt.executeQuery();
这种用set***方式赋值速度很慢,但用直接拼SQL语句的形式就很快,请问原因可能在哪里?谢谢。
------解决方案--------------------
先看看直接拼的语句和这个有什么不同,比如条件的顺序,建议把条件a.publish_statusid= 1放前面
------解决方案--------------------
你是说clssPstmt.setInt(1, iUserID);
这句代码执行很慢还是最后sql执行很慢?
------解决方案--------------------
预编译的慢吗?
------解决方案--------------------
我感觉是参数类型的问题
clssPstmt.setInt(1, iUserID);
clssPstmt.setDate(2, clssBeginDate);
clssPstmt.setDate(3, clssEndDate);
这个setInt和setDate以后会否跟数据库的number和varchar不同?
------解决方案--------------------
如果你觉得慢,那就用存储过程
------解决方案--------------------
无能为力
------解决方案--------------------
帮顶。。。
------解决方案--------------------
@
------解决方案--------------------