SQL查询用了6小时还没结束正常吗

来源:百度知道 编辑:UC知道 时间:2024/06/23 08:21:04
有表T5 里面有2个字段 28万条记录 我用以下代码进行表操作 现在用时6小时多了 查询还没结束 我想知道是否正常
CREATE FUNCTION dbo.fn_strSum(@ConsigneeName nvarchar(100))
RETURNS varchar(8000)
AS
BEGIN
DECLARE @ContentDescription varchar(8000)
SET @ContentDescription = ''
SELECT @ContentDescription = @ContentDescription + ',' + ContentDescription FROM T5 WHERE ConsigneeName='+@ConsigneeName+'
RETURN STUFF(@ContentDescription, 1, 1, '')
END
GO

SELECT ConsigneeName, VALUE = dbo.fn_strSum(ConsigneeName) into #tmp FROM T5 GROUP BY ConsigneeName
DROP FUNCTION dbo.fn_strSum
select * into T6 from #tmp
drop table #tmp
7小时了 0_0... 请问如何优化?大哥大姐救命啊~~
表T5
CONSIGNEENAME CONTENTDESCRIPTION EMAIL
A BB EEE
A CC EEE
A DD EEE
B RR

需要优化。
这里不建议用函数,能用存储过程去做最好。

补充
-----
贴出你的表结构,以及你想要什么样的结果。

---补充2
刚仔细看了下代码,知道你为什么慢了,你函数里还有个select
如果你没建索引的化,你就要做28万次全表扫描,即使建索引还是很慢
这个过程可以用游标来做。你是什么数据库???

下班了。时间少了
写了个简单的,供你参考,MSSQL
declare @ConsigneeName char(1)
declare @CONTENTDESCRIPTION varchar(100)
declare @var1 char(1)
declare @var2 varchar(100)
declare @email varchar(100)
declare cur_ConsigneeName cursor for select distinct ConsigneeName,EMAIL from T5
open cur_ConsigneeName
fetch next from cur_ConsigneeName into @var1,@email
while @@fetch_status = 0
begin
set @CONTENTDESCRIPTION = ''
declare cur_CONTENTDESCRIPTION cursor for select CONTENTDESCRIPTION from T5 where ConsigneeName = @var1
open cur_CONTENTDESCRIPTION
fetch next from cur_CONTENTDESCRIPTION into @var2
while @@fetch_status = 0
begin
set @CONTENTDESCRIPTION = @CONTENTDESCRIPTION+@var2+'