求修改一条语句,提高处理速度

talentmykaka 2010-01-13 06:48:36
UPDATE SPJS_LS SET ppbm=b.spbm ,ppmc=b.spmc,xmlb=b.splb ,kbbl=b.kzbl,kbsx=b.kbsx
FROM SPJS_LS a,ZD_SPGL b where a.dz='南京' and a.FP='1234567890' and
a.sslx='饮料' and b.zt='正常' and a.xmmc like b.sptym+'%'
and not exists (select 1 from ZD_SPGL b1 where b1.zt='正常' and a.xmmc
like b1.sptym+'%' and len(b1.sptym)>len(b.sptym))

现在这条语句处理速度为8秒+
如何缩短这条语句的处理速度?

SPJS_LS无任何索引
ZD_SPGL sptym为索引
...全文
82 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
talentmykaka 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 talentmykaka 的回复:]
这个语句不能优化么?或者用什么样的语句可以达到相同的效果?
很急,拜托各位大哥
[/Quote]
该如何修改呢?谢谢
SQL77 2010-01-13
  • 打赏
  • 举报
回复
len(b1.sptym)>len(b.sptym))

这个想办法看下,
talentmykaka 2010-01-13
  • 打赏
  • 举报
回复
这个语句不能优化么?或者用什么样的语句可以达到相同的效果?
很急,拜托各位大哥
talentmykaka 2010-01-13
  • 打赏
  • 举报
回复
没有办法解决这个问题么?
prettyjjjun 2010-01-13
  • 打赏
  • 举报
回复
也不明白怎么会这样、、
talentmykaka 2010-01-13
  • 打赏
  • 举报
回复
另外ZD_SPGL这个表里的数据也不多啊,也就8000条左右,为什么会这么慢呢?如何解决呢?真头晕
--小F-- 2010-01-13
  • 打赏
  • 举报
回复
---无法使用索引的select语句
1.对索引列使用了函数,如:
select * from tb where max(id)=100

2.对索引列使用了'%xx',如:
select * from tb where id like '%1'
需要注意的不是所有使用like关键字的select 语句都无法使用索引,比如
select * from tb where id like '1%'就可以使用索引

3.在where子句中对列进行类型转换(其实也是使用到了函数)

4.在组合索引的第1列不是使用最多的列,如在下面3个查询语句中建立组合索引,按顺序包含col2,col1,id列;
select * from tb where id='1' and col1='aa'
select id,sum(col1) from tb group by id
select * from tb where id='2' and col2='bb'
则第一句和第二句无法使用到索引 所以需要注意组合索引的顺序

5.在where 子句中使用in关键字的某些句子
当在in关键字后面使用嵌套的select语句,将无法使用在该列上定义的索引
如:
select
*
from
ta
where
id
in
(select id from tb where ....)

--这样可以用到索引
select * from tb where id in('1','2')
bancxc 2010-01-13
  • 打赏
  • 举报
回复
函数可能是索引失效
SQL77 2010-01-13
  • 打赏
  • 举报
回复
sptym这个有索引也没用,在函数里面

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧