gpt4 book ai didi

tsql - 表值函数 [XML 阅读器] 非常慢 - 替代方案?

转载 作者:行者123 更新时间:2023-12-02 11:53:21 24 4
gpt4 key购买 nike

我有以下查询,它确实会降低性能,并且想知道它们对于 xml 读取器子查询有哪些替代方案。此查询的目的是使用一些 html 代码导出数据。

表格数据示例如下。

  p_s_id | p_c_id | notes
-----------------------
1 | 1 | this note is really long.
2 | 1 | This is fun.
3 | null | long note here
4 | 2 | this is not fun
5 | 2 | this is not fun
6 | 3 | long note here

我想获取具有相同 p_c_id 的所有不同笔记并将它们连接在一起,如下所示。

可以提供任何其他信息,请随时发表评论。

select distinct
p_c_id
,'<br/><br/>'+(select distinct '&bull; ' +cast(note as nvarchar(max)) + ' <br/> '
from dbo.spec_notes_join m2
where m.p_c_id = m2.p_c_id
and isnull(note,'') <> ''
for xml path(''), type).value('.[1]', 'nvarchar(max)') as notes_spec
from dbo.spec_notes_join m

因此导出如下所示:

  p_c_id | notes
--------------
1 | <br/><br/> &bull; this note is really long. <br/> &bull This is fun <br/>
2 | <br/><br/> &bull; This is not fun. <br/>
3 | <br/><br/> &bull; long note here. <br/>

最佳答案

我认为,如果跳过外部查询中的 distinct 并执行 group by p_c_id ,您会获得稍好的性能。

select p_c_id,
'<br/><br/>'+(select distinct '&bull; ' +cast(note as nvarchar(max)) + ' <br/> '
from dbo.spec_notes_join m2
where m.p_c_id = m2.p_c_id and
isnull(note,'') <> ''
for xml path(''), type).value('.', 'nvarchar(max)') as notes_spec
from dbo.spec_notes_join m
group by p_c_id

您还可以尝试使用 CLR User-Defined Aggregate Function 连接.

其他替代方案可以在这里找到 Concatenating Row Values in Transact-SQL .

关于tsql - 表值函数 [XML 阅读器] 非常慢 - 替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7041015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com