【发布时间】:2012-05-11 06:21:15
【问题描述】:
我想运行一个存储过程,它返回一大堆东西,其中一个是逗号分隔的结果字符串。
我已经阅读了 COALESCE 并创建了一个这样的函数:
DECLARE @ListOfStuff NVARCHAR(4000)
SELECT @ListOfStuff = COALESCE(@ListOfStuff + ', ', '') + Z.SingleStuff
FROM X
INNER JOIN Y ON X.SomeId = Y.Id
INNER JOIN Z ON Y.SomeId = Z.id
WHERE --Some condition
RETURN ISNULL(@ListOfStuff, '')
然后在我的主 SELECT 中调用此函数,它按预期工作。 但是,该过程现在需要很长时间才能运行,并且经常超时。 我想知道的是,是否有人知道如何优化它。 我相信摆脱该函数并将此逻辑合并到过程中会使其运行得更快,但我无法找到一种方法来让子选择以这种方式使用 COALESCE。
任何想法如何优化这个逻辑? 非常感谢提前
【问题讨论】:
-
您使用的是什么 RDBMS 和版本?
标签: sql string stored-procedures coalesce sql-function