不需要functioncreate proc ss
@j varchar(13)
,@cd int
,@time datetime
as
select
a,
b,
c,
d=isnull(@str+',','')+rtrim(dd.d)
from dd
where
a=@j and b=@cd and c=@time
@j varchar(13)
,@cd int
,@time datetime
as
select
a,
b,
c,
d=isnull(@str+',','')+rtrim(dd.d)
from dd
where
a=@j and b=@cd and c=@time
--在SQL2000中,合并字符串只能这样做,函数已经简化不了了。不过可以根据实际情况将返回的字符串大小改小点。
--另外看了下楼主在存储过程中调用函数,还不如直接:
create proc ss
@j varchar(13)
,@cd int
,@time datetime
as
declare @str varchar(8000)
select @str=isnull(@str+',','')+rtrim(d) from dd where a=@a and b=@b and c =@time
select a, b, c, d=@str from dd--难道这样效果不是一样?干吗要舍简求繁?
--不好意思,上面写错了一点
create proc ss
@j varchar(13)
,@cd int
,@time datetime
as
declare @str varchar(8000)
select @str=isnull(@str+',','')+rtrim(d) from dd where a=@a and b=@b and c =@time
select a=@j,b=@cd,c=@time,d=@str--这里改下
不知道你每次返回多少数据如果可能,可以加索引试试
create index idx_01 on tempday(a,b,c)
create index idx_02 on dd(a,b,c)
a,
b,
c,
d=fun_uniut(a,b,c) a,b,c并不是传参数传进的 函数里的@a @b @c 就是a,b,c的值 不能写成你那个样子。上边我说错了 应该是按倍数增长的。
数据量大约有4000条数据这样搜索的话 就等于做4000*4000次的查询,关键就是这里导致速度慢下来。我也想过建立索引但是我现在是没有权利给表加约束的。。只有那些常规查询 更新 删除单条记录 的操作的权利。。
请大侠们再帮帮忙想想办法
先谢谢了