使用 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
  1. 使用 sql 仅将联系人获取到数据表中,并使用第二个查询将所有电话号码引入字典,并使用 C# 代码将每个联系人的电话号码附加。

有人可以告诉我什么approuce有更好的表现吗?

使用 SQL for XML 路径或 C# 字典

根据经验,如果你可以在数据库中做到这一点 - 去做。

但是,这可能取决于。如果您的表非常小,则查询内存中结构可能会更快,因为您可以节省往返数据库的时间。另一方面,如果表相当大,数据库通常会更快地过滤它,而且它不使用本地进程的计算和内存资源。

我在SQL Server中做了一些繁重的XML,我的经验是它非常慢(即使已编制索引)。我会查询所有数据,然后在填写/构造数据表时,解析(使用 XmlDocument?)并附加必要的列。

无论如何,我的 XML blob 非常大且复杂(每个 1-5mb),如果更小,也许使用 SQL XML 功能会更好。对不起,这不是一个真正的答案:)

祝您的查询好运!