• 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;
    
    

    查看执行计划:

  • 相关阅读:
    模拟测试20190806
    替罪羊树学习日记
    [Usaco2015 Jan]Moovie Mooving
    [NOIP2016]愤怒的小鸟
    [BZOJ1556]墓地秘密
    [SDOI2009]学校食堂Dining
    [SCOI2008]奖励关
    [洛谷3930]SAC E#1
    [BZOJ2809/APIO2012]dispatching
    [Usaco2018 Open]Disruption
  • 原文地址:https://www.cnblogs.com/Roy_88/p/5463062.html
Copyright © 2020-2023  润新知