互联网服务

应用中SQL查询过慢的问题

某个SQL在客户端中执行很快,但是作为动态SQL在应用中执行很慢例如 select * from tab where col1=5,这条SQL在客户端中执行速度挺快的
但是在应用中 select * from tab where col1=?,参数动态传入。发现执行的速度很慢。


出现这类问题的原因是什么,有什么解决办法
参与14

13同行回答

hongyehongyehongyehongye数据库管理员哈尔滨银行
绑定的时候可以采取reopt once ,然后第一次执行传入col1=5的参数显示全部
绑定的时候可以采取reopt once ,然后第一次执行传入col1=5的参数收起
银行 · 2013-11-08
浏览789
jason2012jason2012数据库管理员IBM
回复 6# leo_wyn    非常感谢提供宝贵意见显示全部
回复 6# leo_wyn


   非常感谢提供宝贵意见收起
互联网服务 · 2013-11-05
浏览795
jason2012jason2012数据库管理员IBM
回复 11# 欧阳峰    虽然看着挺麻烦的 还是非常感谢显示全部
回复 11# 欧阳峰


   虽然看着挺麻烦的 还是非常感谢收起
互联网服务 · 2013-11-05
浏览793
欧阳峰欧阳峰其它Freelancer
可以下载的pdfhttp://www.ibm.com/developerwork ... edprocedure-pdf.pdf显示全部
IT其它 · 2013-11-05
浏览826
欧阳峰欧阳峰其它Freelancer
挺繁琐的,具体参考http://www.ibm.com/developerwork ... anrb/?ca=drs-tp4608显示全部
IT其它 · 2013-11-05
浏览826
jason2012jason2012数据库管理员IBM
回复 8# 欧阳峰     如何走固定索引呢 能不能具体一些啊显示全部
回复 8# 欧阳峰


    如何走固定索引呢 能不能具体一些啊收起
互联网服务 · 2013-11-05
浏览873
jason2012jason2012数据库管理员IBM
回复 6# 欧阳峰    目前问题是解决了,通过创建索引的方式,但是我觉得额外建一些索引不太好。有没有办法让绑定变量的SQL一开始就走正确的执行计划显示全部
回复 6# 欧阳峰


   目前问题是解决了,通过创建索引的方式,但是我觉得额外建一些索引不太好。有没有办法让绑定变量的SQL一开始就走正确的执行计划收起
互联网服务 · 2013-11-05
浏览857
欧阳峰欧阳峰其它Freelancer
1.使用绑定变量的时候如果第一次使用索引了那么以后就会走索引,如果第一次没使用那么之后就不走了2.使用绑定变量有些时候会走错执行计划,有可能导致执行计划不稳,因此有可能不走索引了...显示全部
1.使用绑定变量的时候如果第一次使用索引了那么以后就会走索引,如果第一次没使用那么之后就不走了
2.使用绑定变量有些时候会走错执行计划,有可能导致执行计划不稳,因此有可能不走索引了收起
IT其它 · 2013-11-05
浏览839
leo_wynleo_wyn商业智能工程师Security
1. 检查动态参数的数据类型是否与COL1数据类型匹配2. 运行runstats,获取表和列的最新统计信息3. 使用snapshot 参数跟踪动态语句的执行另外,可以使用report绑定来提高动态绑定宿主变量的查询性能(先采用REOPT ONCE测试)...显示全部
1. 检查动态参数的数据类型是否与COL1数据类型匹配
2. 运行runstats,获取表和列的最新统计信息
3. 使用snapshot 参数跟踪动态语句的执行

另外,可以使用report绑定来提高动态绑定宿主变量的查询性能(先采用REOPT ONCE测试)收起
系统集成 · 2013-11-05
浏览850
jason2012jason2012数据库管理员IBM
回复 2# 欧阳峰    一般来说,绑定变量的方式也会使用索引吧?显示全部
回复 2# 欧阳峰


   一般来说,绑定变量的方式也会使用索引吧?收起
互联网服务 · 2013-11-05
浏览858

提问者

jason2012
数据库管理员IBM

问题状态

  • 发布时间:2013-11-04
  • 关注会员:1 人
  • 问题浏览:8150
  • 最近回答:2013-11-08
  • X社区推广