当前位置: 代码迷 >> Java Web开发 >> SQL 话语在sql里运行很快,但是在项目中慢
  详细解决方案

SQL 话语在sql里运行很快,但是在项目中慢

热度:1913   发布时间:2013-02-25 21:05:49.0
SQL 语句在sql里运行很快,但是在项目中慢
我写的语句
select count(distinct GK.localId) from
GoogleKeyword GK
left outer JOIN GoogleKeywordReport GKR ON GK.backId = GKR.backKeywordId
AND GKR.reportDate BETWEEN #{startDay} AND #{endDay}
right outer JOIN GoogleAdGroup GA ON GK.localAdGroupId = GA.localId
right outer JOIN GoogleCampaign GC ON GK.localCampaignId = GC.localId
where GK.accountId = #{accountId}

数据将近10万条,后期还会增加。
在Microsoft sql 2005中运行很快,但是在项目中运行时,会卡在sql的执行
是Java应用还是Net应用呢?如果是Java应用的话避免用ODBC和数据库连接。
显示SQL应该没有性能问题,是不是应用和数据库建立的连接没有及时close?数据库压力如何本机运行一次 以后的查询都会很快 
既然在Microsoft sql 2005执行很快,那就和SQL关系不大,这个应该从代码上检查是不是出问题,如果有用到连接池,就要关注连接是否有关闭,是否并发太多等等。。。。。。

还有注意WEB服务器连接数据库直接是否有问题
引用:
既然在Microsoft sql 2005执行很快,那就和SQL关系不大,这个应该从代码上检查是不是出问题,如果有用到连接池,就要关注连接是否有关闭,是否并发太多等等。。。。。。

还有注意WEB服务器连接数据库直接是否有问题


10万数据真的不大
你的语句真的不够优化
你的问题大概真的不是由于你这个有一点小问题的语句产生的10万行并不算啥,核心问题是:是否有全表扫描或全索引扫描之类的遍历型操作。

所以:做SQL执行计划分析,是否符合预期,检查索引是否齐备。


不过,感觉你这个SQL,表连接数量比较多,这个。。。。。。有时间检查下数据模型设计是否合理。要关注连接是否有关闭,是否并发太多等等 还有注意WEB服务器连接数据库直接是否有问题



是Java应用还是Net应用呢?如果是Java应用的话避免用ODBC和数据库连接。
显示SQL应该没有性能问题,是不是应用和数据库建立的连接没有及时close?
  相关解决方案