论坛首页 综合技术版 Database

sql调优问题

浏览 723 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2007-10-23
最近一个项目中有表  A,字段B,B中的内容为:1,2,3等中间由,号隔开的信息,现要过滤含3的信息,初始语句为 select * from A where B like '%3%',结果压力测试时响应43S,后改为 select * from A where replace(B,',','') like '%3%',测试结果为13S。数据库为sqlserver2000+sp4,测试为40用户并发测试,表A中数据量级别为千条以下。请大家帮我分析一下为什么去掉,号后会有这么大的性能改进?也请大家介绍一下平时使用的sql语句性能分析或者优化工具软件。谢谢!
   
最后更新时间:2007-10-23
用数据库的explain语句看一下SQL的执行计划
   
0 请登录后投票
最后更新时间:2007-10-23
> 千条以下?!

全读上来,自己写代码挑,保证1秒内完成。
   
0 请登录后投票
最后更新时间:2007-10-23
rtdb 写道
> 千条以下?!

全读上来,自己写代码挑,保证1秒内完成。



目前可以这样做哈,但是以后数据量大起来肯定就不能这样干的。单条语句执行的时候是没有性能问题的,只是并发压力测试的时候响应缓慢,40用户同时并发为43s
,后来采用第二种语句后压力测试响应时间为13s,我就是不明白,为什么过滤掉逗号并发性能会差这么多!单条语句察看执行计划的时候,反而是第二种要多一个环节
   
0 请登录后投票
最后更新时间:2007-10-23
最好不要用%%这种东西,这东西导致索引无效,你愿意的话,可以改一下表的结构把那几个值单独作为列
   
0 请登录后投票
论坛首页 综合技术版 Database

跳转论坛:
JavaEye推荐