【发布时间】:2014-04-29 09:50:47
【问题描述】:
假设我有 e 表 - 表 1、表 2 和表 3。 Table2 在 Table1 和 Table3 上有外键。表 2 有“名称”字段。我想从 Table3 中选择 Table1.id 和所有匹配的名称(连接)。这是查询
CREATE FUNCTION dbo.concat_string(@Input int)
RETURNS VARCHAR(8000)
BEGIN
DECLARE @strList VARCHAR(8000)
SELECT @strList = COALESCE(@strList + ' ', '') + CAST(Table3.Name AS VARCHAR)
FROM Table1
JOIN Table2 ON Table2.Table1_ID = Table1.ID
JOIN Table3 ON Table3.ID = Table2.Table3_ID
WHERE
Table1.ID = @Input
RETURN @strList;
END
SELECT Table1.ID, Table4.cc
FROM Table1 JOIN
(SELECT Table1.ID dbo.concat_string(Table1.ID) as "cc" FROM Table1) Table4
ON Table1.ID = Table4.cID
它按我想要的方式工作,但是太慢了。我该如何优化呢? 任何优化都会有所帮助。
【问题讨论】:
标签: sql sql-server function optimization string-concatenation