当前位置: 代码迷 >> Java Web开发 >> prepareStatement 有关问题 ,请高手 帮忙
  详细解决方案

prepareStatement 有关问题 ,请高手 帮忙

热度:925   发布时间:2016-04-17 14:11:24.0
prepareStatement 问题 ,急,请高手 帮忙
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不同?
------解决方案--------------------
如果你觉得慢,那就用存储过程

------解决方案--------------------
无能为力
------解决方案--------------------
帮顶。。。
------解决方案--------------------
@
------解决方案--------------------