那天下班了,将 Standardrelated like '%'+@row1+'%' 
改成 charindex(@row1,Standardrelated )>0 效率会提高点,可能还是不解决根本问题

解决方案 »

  1.   

    我把问题再描述清楚一点:有一张表 Extenddata (Scode varchar(100),oldscode varchar(1000))我是把另一张表 Standarddata (这张表中也有个字段叫 Scode) 中的查询结果集以逗号分隔开放置到 Extenddata.oldscode 中.
    查询条件是 
    select scode from Standarddata where Standardrelated like '% Extenddata.Scode %' 
    有朋友帮我写了一个方法: 
    create function f_str(@row1 varchar(100)) 
    returns varchar(1000) as 
    begin 
    declare @str varchar(1000) 
    set @str='' 
    select @str=@str+','+scode from Standarddata where Standardrelated like '%'+@row1+'%' 
    set @str=stuff(@str,1,1,'') 
    return @str 
    end 
    --------------- 
    update Extenddata set oldscode=dbo.f_str(Scode) 
      

  2.   

    建议用CONTAINS(,)来代替like 看是否快一点。
      

  3.   

    to QZY2003(剑客飘红) 
    请教一下,如何在MSSQL上建全文索引?
      

  4.   

    是啊,数据量太大了.
    还有什么好的处理办法吗?  游标能解决吗?
    ----------------------------------------------
    使用游标只会更慢。
    其实我觉得你的处理方法已经比较好了,不知道这里面是否还有其他的逻辑。
    现在在你的脚本上可以做的提升就是把“ where Standardrelated like '%'+@row1+'%'”
    改成 where charindex(@row1,Standardrelated)>0
    一般情况%...%匹配的效率会低于charindex.如果你的逻辑允许....%匹配,速度将会提升不少。
      

  5.   

    哈~~ 分段处理 加个ID号
    update Extenddata set oldscode=dbo.f_str(Scode)  where id>1000 and id<2001
    分几步就能执行了。
      

  6.   

    请教一下,如何在MSSQL上建全文索引?
    -------------------------------------------
    全文索引要在你当前数据库级别上建立,查看数据库  Properties--Files,
    选中: using full-text indexing
      

  7.   

    1.不要用like
    2.建索引
    3. where后的条件字段改成varchar类型,不然会整个字段长度匹配