Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用XML而不是NVARCHAR(max)是否可以提高性能?_Xml_Sql Server 2005_Blob - Fatal编程技术网

使用XML而不是NVARCHAR(max)是否可以提高性能?

使用XML而不是NVARCHAR(max)是否可以提高性能?,xml,sql-server-2005,blob,Xml,Sql Server 2005,Blob,我将在数据库中存储一些文本。文本恰好是xml 我只存储和读取文本的“blob”(我没有使用任何xml查询或索引工具) 将列声明为xml,有什么好处吗 CREATE TABLE docs (pk INT PRIMARY KEY, xCol XML not null) 而不是nvarchar(最大值): 我想,如果我给SQL Server一个提示,文本实际上是xml 注意:对于我来说,第三个选项是压缩文本客户端并将数据存储在varbinary(max)blob列中。将其存储为XML很可能会导致比n

我将在数据库中存储一些文本。文本恰好是xml

我只存储和读取文本的“blob”(我没有使用任何xml查询或索引工具)

将列声明为
xml
,有什么好处吗

CREATE TABLE docs (pk INT PRIMARY KEY, xCol XML not null)
而不是
nvarchar(最大值)

我想,如果我给SQL Server一个提示,
文本实际上是
xml


注意:对于我来说,第三个选项是压缩文本客户端并将数据存储在
varbinary(max)
blob列中。

将其存储为XML很可能会导致比nvarchar更小的存储大小(我发现这是正确的,至少是因为删除了不相关的空白和其他此类格式)。但是,SQL server将在每次插入和更新之前检查XML的格式是否正确,因此您可能会在这些时候遭受性能损失。我认为这种检查与任何数据类型检查一样也是一种优势。

将其存储为XML很可能会导致比nvarchar更小的存储大小(我发现这是正确的,至少由于删除了不相关的空白和其他此类格式)。但是,SQL server将在每次插入和更新之前检查XML的格式是否正确,因此您可能会在这些时候遭受性能损失。我认为这种检查与任何数据类型检查一样也是一种优势。

可能的重复:使用
XML
数据类型,您的数据不是以文本格式存储的,而是“标记化”的,并以更优化的方式存储。因此,是的-如果您确实有XML-请将其存储为
XML
(您也可以在
XML
列上直接使用XQuery方法,而无需转换和乱七八糟的东西)可能的重复:使用
XML
数据类型,您的数据不会以文本格式存储-它是“标记化”的,并且以更优化的方式存储。因此,是的-如果您确实有XML-请将其存储为
XML
(您也可以在
XML
列上直接使用XQuery方法,而无需进行转换和处理)嗯,我从未考虑过SQL Server可能会改变XML的缺点;删除空白等。SQL Server可能会修改原始xml吗?有一些方法可以修改,尽管我不是一个大粉丝(而且更愿意这样做)。这可能会增加存储的XML的大小。我个人没有见过SQL Server改变元素或属性的顺序,但是禁止改变元素的顺序,否则会导致XML无效(基于其模式)。但是XML对属性没有这样的排序要求,“开始标记或空元素标记中属性规范的顺序并不重要”是的,我理解。上面marc_s也许说得最好。从另一个角度来看,XML使用了更多的CPU,但I/O更少。一如既往,您必须在自己的环境中进行测试,以查看确切的权衡,并确定它们是否值得。接受的答案是“是的,但如果您不想在背后修改XML,请不要这样做。”嗯,我从未考虑过SQL Server可能改变XML的缺点;删除空白等。SQL Server可能会修改原始xml吗?有一些方法可以修改,尽管我不是一个大粉丝(而且更愿意这样做)。这可能会增加存储的XML的大小。我个人没有见过SQL Server改变元素或属性的顺序,但是禁止改变元素的顺序,否则会导致XML无效(基于其模式)。但是XML对属性没有这样的排序要求,“开始标记或空元素标记中属性规范的顺序并不重要”是的,我理解。上面marc_s也许说得最好。从另一个角度来看,XML使用更多的CPU,但I/O更少。一如既往,您必须在自己的环境中进行测试,以查看确切的权衡,并确定它们是否值得。接受的答案是“是的,但如果您不想在背后修改XML,请不要这样做。”
CREATE TABLE docs (pk INT PRIMARY KEY, xCol NVARCHAR(max) not null)