毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 数据库 >> 正文

sql使用函数计算出匹配度

更新时间:2016-6-1:  来源:毕业论文

如:表a   建立函数

FUNCTION [dbo].[ toola](@a [nvarchar](4000), @txt [nvarchar](4000))
RETURNS [smallint] WITH EXECUTE AS CALLER

select * from a order by toola(a.字段1,'aaa') desc


很慢 ,该表 其他地方 用到过索引 ,数据量也大
order by toola(a.字段1,'aaa') desc

order by  自定义函数,肯定会慢的;

op 10 ,也是先把所有的行,都按这个函数做一下计算,再排序,最后取前 10 行,所以速度也是慢的;

本人采用 标量函数

CREATE FUNCTION CGF_FN_Search(@inStr VARCHAR(500),@fndStr VARCHAR(500),@doc VARCHAR(5))
RETURNS INT
AS
BEGIN
DECLARE @i INT,@c VARCHAR(500),@fStr VARCHAR(500)
SET @fStr = @fndStr
WHILE(LEN(@fStr) > 0)
BEGIN
SET @i = Charindex(@doc, @fStr)
IF(@i = 0)
BEGIN
IF(CHARINDEX(@fStr,@inStr) > 0)
RETURN 1
ELSE
RETURN 0
END
ELSE
BEGIN
SET @c = SUBSTRING(@fStr,1,@i-1)
IF(CHARINDEX(@c,@inStr) > 0)
RETURN 1
ELSE
SET @fStr = SUBSTRING(@fStr,@i+LEN(@doc),LEN(@fStr))
END
END
RETURN 0
END

速度比之前快了 不少,cpu 时间快了 40倍,执行时间快了5倍

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。