使用 SQL for XML 路径或 C# 字典
本文关键字:字典 路径 XML SQL for 使用 | 更新日期: 2023-09-27 17:56:06
我需要显示联系人及其电话号码的网格,每个联系人都有单独的电话号码,所以我有两种方法可以做到这一点:1. 将 SQL 用于 xml 路径,如下所示:
SELECT contacts.first_name,
(SELECT SUB.display_phone + ',' AS [text()]
FROM contact_phones SUB
WHERE SUB.contact_id = contacts.id
FOR XML PATH('')) AS Phones
FROM contacts
- 使用 sql 仅将联系人获取到数据表中,并使用第二个查询将所有电话号码引入字典,并使用 C# 代码将每个联系人的电话号码附加。
有人可以告诉我什么approuce有更好的表现吗?
根据经验,如果你可以在数据库中做到这一点 - 去做。
但是,这可能取决于。如果您的表非常小,则查询内存中结构可能会更快,因为您可以节省往返数据库的时间。另一方面,如果表相当大,数据库通常会更快地过滤它,而且它不使用本地进程的计算和内存资源。
我在SQL Server中做了一些繁重的XML,我的经验是它非常慢(即使已编制索引)。我会查询所有数据,然后在填写/构造数据表时,解析(使用 XmlDocument?)并附加必要的列。
无论如何,我的 XML blob 非常大且复杂(每个 1-5mb),如果更小,也许使用 SQL XML 功能会更好。对不起,这不是一个真正的答案:)
祝您的查询好运!