SQL Server 2005的XML数据类型和VARCHAR(MAX)之二

结果:

  SQL Server 2005的XML数据类型和VARCHAR (MAX)图5

看起来是一样的,但是……


SELECT datalength(MyXML) FROM TryXMLDatatype
Go
SELECT datalength(MyXML) FROM TryVACRCHARDatatype
Go 

SQL Server 2005的XML数据类型和VARCHAR (MAX)图6

这比前面好一些(现在是136,268,而不是271,210),但情况仍然相同。如果我将XML转化到VARCHAR(MAX)然后计算长度:


SELECT
datalength(convert(varchar(max),MyXML)) FROM TryXMLDatatype
go
SELECT datalength(MyXML)FROM TryVARCHARDatatype
Go 

SQL Server 2005的XML数据类型和VARCHAR (MAX)图7

长度相同。

这意味着XML数据类型的存储方式更加高效。现在两个表包括了相同的数据,让我们再看看Profiler的跟踪命令select * from both tables (three executions)的结果:

SQL Server 2005的XML数据类型和VARCHAR (MAX)图8

XML数据类型的读取数少了20%。

I/O统计:

TryXMLDatatype表:扫描次数:0,逻辑读取次数:1,物理读取次数:0,预读次数:0,慢速逻辑读取次数:56,慢速物理读取次数:0,慢速预读次数:0。

TryVARCHARDatatype表:扫描次数:0,逻辑读取次数:1,物理读取次数:0,预读次数:0,慢速逻辑读取次数:100,慢速物理读取次数:0,慢速预读次数:0。

同样,这里XML数据类型的读操作也效率更高。

查询到XML转换为VARCHAR(MAX)是怎样的呢?


SELECT convert(varchar(max),MyXML) FROM TryXMLDatatype
Go
SELECT MyXML FROM TryVARCHARDatatype
Go 

SQL Server 2005的XML数据类型和VARCHAR (MAX)图9

TryXMLDatatype表:扫描次数:1,逻辑读取次数:1,物理读取次数:0,预读次数:0,慢速逻辑读取次数:20,慢速物理读取次数:0,慢速预读次数:9。

TryVARCHARDatatype表:扫描次数:1,逻辑读取次数:1,物理读取次数:0,预读次数:0,慢速逻辑读取次数:100,慢速物理读取次数:0,慢速预读次数:0。

对于不变行为的唯一度量标准是I/O读取。而且,XML转换查询还会使用CPU资源来实现转换——这很正常。

结论

XML数据类型表示存储纯XML数据,它不包括不必要的头尾字符。这带来的结果是通过I/O方法实现更划算的存储方式,然而这里仍然有一些CPU资源用于验证XML是有否效。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16436858/viewspace-604317/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16436858/viewspace-604317/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值