zoukankan      html  css  js  c++  java
  • XML之sql:variable性能比较

    USE tempdb
    GO
    --Xml采用元素时,Xml文件比较小,用属性解析速度会相关较,通过查看执行计划可以,通过Openxml先分析比较,性能等同
    
    
    --元素
    DECLARE @x XML
    SET @x=
    '<SO>
    	<ID>1</ID>
    	<SONr>SO#1</SONr>
    	<Customer>Roy</Customer>
    	<OrderDate>2012-12-01 10:00</OrderDate>
    </SO>'
    
    --属性
    DECLARE @y XML 
    SET @y=
    '<SO ID="1" SONr="SO#1" Customer="Roy" OrderDate="2012-12-01 10:00"/>'
    
    DECLARE @idoc_x int
    EXEC sp_xml_preparedocument @idoc_x OUTPUT,@x
    
    DECLARE @idoc_y int
    EXEC sp_xml_preparedocument @idoc_y OUTPUT,@y
    --sql:variable
    
    
    
    DECLARE @ID INT
    SET @ID=1
    
    --1、元素
    SELECT 
    	T.c.value('(ID/text())[1]','int')  AS ID,
    	T.c.value('(SONr/text())[1]','varchar(50)')  AS SONr,
    	T.c.value('(Customer/text())[1]','varchar(50)')  AS Customer,
    	T.c.value('(OrderDate/text())[1]','datetime')  AS OrderDate
    FROM @x.nodes('SO[ID=sql:variable("@ID")]') T(c)
    
    --2、用Openxml读元素
    SELECT 
    	* 
    FROM OPENXML(@idoc_x,'SO[ID=sql:variable("@ID")]',2) 
    WITH(
    	ID INT 'ID',
    	SONr varchar(50) 'SONr',
    	Customer varchar(50) 'Customer',
    	OrderDate DATETIME 'OrderDate'
    )
    
    
    --3、属性
    SELECT 
    	T.c.value('@ID[1]','int')  AS ID,
    	T.c.value('@SONr[1]','varchar(50)')  AS SONr,
    	T.c.value('@Customer[1]','varchar(50)')  AS Customer,
    	T.c.value('@OrderDate[1]','datetime')  AS OrderDate
    FROM @y.nodes('SO[@ID=sql:variable("@ID")]') T(c)
    
    --4、用Openxml读属性
    
    SELECT 
    	* 
    FROM OPENXML(@idoc_y,'SO[ID=sql:variable("@ID")]',2) 
    WITH(
    	ID INT '@ID',
    	SONr varchar(50) '@SONr',
    	Customer varchar(50) '@Customer',
    	OrderDate DATETIME '@OrderDate'
    )
    
    
    
    EXEC sp_xml_removedocument @idoc_x;
    EXEC sp_xml_removedocument @idoc_y;
    
    

    查看执行计划:

  • 相关阅读:
    终于成功发布我的博客园处女贴,不过,真的颇费周章,两个htmleditor都非常不好用~~
    全文本代码着色(带源码和示例)
    BlogBench Ver 1.0 发布
    [在windows上使用Unix工具]cygwin
    Linux下压缩与解压
    Linux设置界面或命令行启动
    perl模块安装
    Linux下patch的制作和应用
    TAR命令参数详解
    在windows上使用Sysinternals工具
  • 原文地址:https://www.cnblogs.com/Roy_88/p/5463062.html
Copyright © 2011-2022 走看看