zoukankan      html  css  js  c++  java
  • sql 表分区信息查看

    代码
    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 12
    end

     

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

     

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


  • 相关阅读:
    linux 笔记 一
    DOS命令大全(经典收藏)
    win7+vmware8+centos6.3安装lamp
    php定时计划任务的实现原理
    用mootools开发的轮播图组件
    Git的使用感受
    崛起中的九大HTML5开发工具
    vi 基本命令
    linux grep命令
    写给2013年的自己
  • 原文地址:https://www.cnblogs.com/zping/p/1933820.html
Copyright © 2011-2022 走看看