ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL Server 2005的XML数据类型和VARCHAR(MAX)之二

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

原创 Linux操作系统 作者:iSQlServer 时间:2009-05-27 15:51:22 0 删除 编辑

结果:

  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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-10-17

  • 博文量
    1319
  • 访问量
    2077539