我把问题再描述清楚一点:有一张表 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)
建议用CONTAINS(,)来代替like 看是否快一点。
to QZY2003(剑客飘红) 请教一下,如何在MSSQL上建全文索引?
是啊,数据量太大了. 还有什么好的处理办法吗? 游标能解决吗? ---------------------------------------------- 使用游标只会更慢。 其实我觉得你的处理方法已经比较好了,不知道这里面是否还有其他的逻辑。 现在在你的脚本上可以做的提升就是把“ where Standardrelated like '%'+@row1+'%'” 改成 where charindex(@row1,Standardrelated)>0 一般情况%...%匹配的效率会低于charindex.如果你的逻辑允许....%匹配,速度将会提升不少。
哈~~ 分段处理 加个ID号 update Extenddata set oldscode=dbo.f_str(Scode) where id>1000 and id<2001 分几步就能执行了。
请教一下,如何在MSSQL上建全文索引? ------------------------------------------- 全文索引要在你当前数据库级别上建立,查看数据库 Properties--Files, 选中: using full-text indexing
查询条件是
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)
请教一下,如何在MSSQL上建全文索引?
还有什么好的处理办法吗? 游标能解决吗?
----------------------------------------------
使用游标只会更慢。
其实我觉得你的处理方法已经比较好了,不知道这里面是否还有其他的逻辑。
现在在你的脚本上可以做的提升就是把“ where Standardrelated like '%'+@row1+'%'”
改成 where charindex(@row1,Standardrelated)>0
一般情况%...%匹配的效率会低于charindex.如果你的逻辑允许....%匹配,速度将会提升不少。
update Extenddata set oldscode=dbo.f_str(Scode) where id>1000 and id<2001
分几步就能执行了。
-------------------------------------------
全文索引要在你当前数据库级别上建立,查看数据库 Properties--Files,
选中: using full-text indexing
2.建索引
3. where后的条件字段改成varchar类型,不然会整个字段长度匹配