sql server 2012 执行计划 set showplain_all on

Hi All:

     

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('UF_GETPARTITIONID') IS NOT NULL
BEGIN
    PRINT 'Dropping function UF_GETPARTITIONID'
    DROP FUNCTION UF_GETPARTITIONID
    IF @@ERROR = 0
        PRINT 'Function UF_GETPARTITIONID dropped'
END
GO 
CREATE FUNCTION [dbo].UF_GETPARTITIONID()
RETURNS BIGINT
AS
BEGIN
	DECLARE @PARTITIONID BIGINT = NULL 
	SELECT  @PARTITIONID=RECID FROM DBO.PARTITIONS WITH(NOLOCK)   where partitionkey='initial'
	RETURN @PARTITIONID
END
GO  


  1. Calling function dbo.uf_getpartitionid()


2.Adding column partition to  the query  and compareits query plan to a traditional one. 

SELECT DATAAREAID,[PARTITION],ACCOUNTNUM,TRANSDATE,VOUCHER FROM custtrans 
        WHERE  DATAAREAID = '835' AND [PARTITION] = '5637144576' AND ACCOUNTNUM =        '835-000112' AND 
        TRANSDATE > '2014-07-15' AND VOUCHER = 'AR-0000287'
        GO        
 SELECT DATAAREAID,[PARTITION],ACCOUNTNUM,TRANSDATE,VOUCHER FROM custtrans 
        WHERE DATAAREAID = '835' AND [PARTITION] = dbo.uf_getpartitionid() --returns value of partition 
AND ACCOUNTNUM =  '835-000112'  AND  TRANSDATE > '2014-07-15' AND VOUCHER = 'AR-0000287'

3.Query Plan: getting data through seeking relative indexes.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值