我想运行一个存储过程,它返回一大堆东西,其中一个是逗号分隔的结果字符串。
我已经阅读了 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 的子选择。
任何想法如何优化这个逻辑?提前谢谢了