from TQiYeJBXX t where 1=1
and (select f1.pingJiFH from TPingJiFHWH f1 where f1.bianHao=(select t1.zhuTiJBBH from TPingJiJG t1 where t1.xiangMuJBXX.shouPingZT.bianHao=t.bianHao and t1.pingShenRQ=(select max(tt1.pingShenRQ) from TPingJiJG tt1 where tt1.xiangMuJBXX.shouPingZT.bianHao=t.bianHao and tt1.pingShenRQ>=? and tt1.pingShenRQ<=? and charindex(',',tt1.zhuTiJBBH)<1)))
<>
(select f2.pingJiFH from TPingJiFHWH f2 where f2.bianHao=(select t2.zhuTiJBBH from TPingJiJG t2 where t2.xiangMuJBXX.shouPingZT.bianHao=t.bianHao
and t2.pingShenRQ=(select max(tt2.pingShenRQ) from TPingJiJG tt2 where tt2.xiangMuJBXX.shouPingZT.bianHao=t.bianHao and tt2.pingShenRQ>=? and tt2.pingShenRQ<=? and charindex(',',tt2.zhuTiJBBH)<1)))
这条语句的主要作用是查出今年和去年pingJiFH发生变化的记录(当然还有其他的一些条件)。关联比较复杂。
我都想哭了,查询起来要几分钟时间。这两天一直在尝试做优化。可怎么改都不是很恰当。大家帮我想点办法好吗???
这上面排版实在不好排,各位大牛将就看一下吧。如果实在看着费劲,请留下邮箱。我把版式排一下发给你。
我觉得就是里面嵌套的子查询太多了导致性能低下。各位大牛帮我看看怎么转换成高效率的语句啊
索引都建好了么?
主要是查询语句的自查询太多了。看能不能帮我转换成别的?
建个视图试试吧,牺牲一下数据库性能,提高网站访问速度
主要是查询语句的自查询太多了。看能不能帮我转换成别的?
@winhex: 额,没用过视图,就是将查询结果丢进去视图,会快点很多,或者你分析一下那条语句耗时最长
@walleyekneel: 真心没用过视图,其实我就是想让您帮我看看能不能减少一两个嵌套子查询。用表连接之类的来代替。
@winhex: 分析一下那条语句耗时最长,逐步优化。程序员真的不应该钻牛角尖,解决方法有很多种。。。不该死在一个方法不放弃
看看生成的sql?
写一个存储过程?
看看你自己的查询逻辑
把最里面的那个MAX查询出来的数据用表变量存储起来,这样会大大减少执行计划的复杂度
http://www.cnblogs.com/happysmile/archive/2013/05/28/3104195.html
看看这些sql语句逻辑,能不能分成几条sql语句写。
存储过程,会不会快点