sql 表分区信息查看

ExpandedBlockStart.gif 代码
create   procedure   [ dbo ] . [ sp_show_partition_range ]
(
   
@partition_table      nvarchar ( 255 =   null
  ,
@partition_function   nvarchar ( 255 =   null
)
as
begin
   
set  nocount  on

   
declare   @function_id   int
       
set   @function_id   =   null

   
--  get @function_id base on @partition_table
    if   len ( @partition_table >   0   begin
      
select   @function_id   =  s.function_id
        
from  sys.indexes i
                
inner   join  sys.partition_schemes s
          
on  i.data_space_id  =  s.data_space_id
       
where  i.index_id  <   2
         
and  i. object_id   =   object_id ( @partition_table )
         
      
if   @function_id   is   null
         
return   1          
   
end

   
--  get @function_id base on @partition_function
    if   len ( @partition_function >   0   begin
      
select   @function_id   =  function_id
        
from  sys.partition_functions
       
where  name  =   @partition_function
       
      
if   @function_id   is   null
         
return   1         
    
end
   

   
--  get partition range
    select  partition_function  =  f.name
         ,t.partition
         ,t.minval
         ,value 
=   case   when  f.boundary_value_on_right = 1   then   ' <= val < '   else   ' < val <= '   end
         ,t.maxval
     
from  (
           
select  h.function_id
                 ,partition 
=  h.boundary_id
                 ,minval    
=  l.value
                 ,maxval    
=  h.value
             
from  sys.partition_range_values h
                     
left   join  sys.partition_range_values l
               
on  h.function_id  =  l.function_id  and  h.boundary_id  =  l.boundary_id  +   1

           
union   all

           
select  function_id
                 ,partition 
=   max (boundary_id)  +   1
                 ,minval    
=   max (value)
                 ,maxval    
=   null
             
from  sys.partition_range_values
            
group   by  function_id
          ) t
              
inner   join  sys.partition_functions f
         
on  t.function_id  =  f.function_id
      
where  f.function_id  =   @function_id
         
or   @function_id   is   null
      
order   by   1 2
end

 

  查看分区区间:
      sp_show_partition_range  'SO_Tb_Ps'  --表名
  
查看表分区数据分布情况

 

ExpandedBlockStart.gif 代码
  select  分区编号  =  $partition.PF_SO(OrderDate)
      ,行数      
=   count ( * )
      ,最小值    
=   min (OrderDate)
      ,最大值    
=   max (OrderDate)
  
from  dbo.SO
 
group   by  $partition.PF_SO(OrderDate)
 
order   by   1
 
-- PF_SO为表分区函数


转载于:https://www.cnblogs.com/zping/archive/2011/01/12/1933820.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值