https://www.cnblogs.com/chuncn/archive/2009/02/20/1395165.html

SQL Server 2005 的分区表(partition table)是复杂的,特别是对于初学者来说。不管怎样,我们还是掌握了分区函数(partition function),分区方案(partition scheme),最后终于创建了一个分区表出来。但之后呢,或许你想查看分区表的各个分区分区列的取值范围(这个分区的理论最小值和最大值),虽然可以通过分区函数中定义的边界值(boundary value)来推算出来分区表每个分区(partition)的取值范围,但是事情并不是很简单,你需要一系列繁琐的步骤来实现:首先要找出这个分区表的分区函数;然后确定该分区函数定义的边界值属于 left 或者 right; 最后在脑子里使劲思索几下终于确定了分区列取值范围(partition range)。幸运的是,有了下面的这个存储过程,你的大脑就可以获得解放了。

  1. if exists (select 1 from sys.procedures where name = 'sp_show_partition_range')
  2. drop procedure dbo.sp_show_partition_range
  3. go
  4.  
  5. --------------------------------------------------------------------------------
  6. -- author : p.c.w.l
  7. -- source : www.sqlstudy.com
  8. -- create : 2008-01-01
  9. -- descr : view partition range by 'partition table' or 'partition function'
  10. --------------------------------------------------------------------------------
  11.  
  12. create procedure dbo.sp_show_partition_range
  13. (
  14. @partition_table nvarchar(255) = null
  15. ,@partition_function nvarchar(255) = null
  16. )
  17. as
  18. begin
  19. set nocount on
  20.  
  21. declare @function_id int
  22. set @function_id = null
  23.  
  24. -- get @function_id base on @partition_table
  25. if len(@partition_table) > 0 begin
  26. select @function_id = s.function_id
  27. from sys.indexes i
  28. inner join sys.partition_schemes s
  29. on i.data_space_id = s.data_space_id
  30. where
          -- i.index_id < 2 and
          i.object_id = object_id(@partition_table)
  31.  
  32. if @function_id is null
  33. return 1
  34. end
  35.  
  36. -- get @function_id base on @partition_function
  37. if len(@partition_function) > 0 begin
  38. select @function_id = function_id
  39. from sys.partition_functions
  40. where name = @partition_function
  41.  
  42. if @function_id is null
  43. return 1
  44. end
  45.  
  46. -- get partition range
  47. select partition_function = f.name
  48. ,t.partition
  49. ,t.minval
  50. ,value = case when f.boundary_value_on_right=1 then '<= val <' else '< val <=' end
  51. ,t.maxval
  52. from (
  53. select h.function_id
  54. ,partition = h.boundary_id
  55. ,minval = l.value
  56. ,maxval = h.value
  57. from sys.partition_range_values h
  58. left join sys.partition_range_values l
  59. on h.function_id = l.function_id and h.boundary_id = l.boundary_id + 1
  60.  
  61. union all
  62.  
  63. select function_id
  64. ,partition = max(boundary_id) + 1
  65. ,minval = max(value)
  66. ,maxval = null
  67. from sys.partition_range_values
  68. group by function_id
  69. ) t
  70. inner join sys.partition_functions f
  71. on t.function_id = f.function_id
  72. where f.function_id = @function_id
  73. or @function_id is null
  74. order by 1, 2
  75. end
  76. go

SQL Server 查看分区表(partition table)的分区范围(partition range)的更多相关文章

  1. hive中简单介绍分区表(partition table)——动态分区(dynamic partition)、静态分区(static partition)

    一.基本概念 hive中分区表分为:范围分区.列表分区.hash分区.混合分区等. 分区列:分区列不是表中的一个实际的字段,而是一个或者多个伪列.翻译一下是:“在表的数据文件中实际上并不保存分区列的信 ...

  2. SQL Server 2005 分区表实践——分区切换

    本文演示了 SQL Server 2005 分区表分区切换的三种形式: 1. 切换分区表的一个分区到普通数据表中:Partition to Table: 2. 切换普通表数据到分区表的一个分区中:Ta ...

  3. SQL Server查看库、表占用空间大小

    转自:https://blog.csdn.net/yenange/article/details/50493580 查询数据文件与日志文件占用情况,查看数据大小,查看库大小 1. 查看数据文件占用(权 ...

  4. SQL SERVER 查看mdf ldf文件路径

    SQL SERVER 查看mdf ldf文件路径 select filename from sysfiles

  5. sql server 查看对象最后修改时间

    sql server 查看对象最后修改时间,根据最后修改时间排序 存储过程 SELECT * FROM sys.all_objects WHERE  TYPE='P' ORDER BY modify_ ...

  6. Sql Server 查看存储过程最后修改时间

    Sql Server 查看存储过程最后修改时间 select * from sys.procedures order by modify_date desc

  7. SQL Server查看Sql语句执行的耗时和IO消耗

    原文:SQL Server查看Sql语句执行的耗时和IO消耗 在做系统过程中,经常需要针对某些场景进行性能优化,那么如何判定性能优化的效果呢?肯定需要知道优化之前Sql语句的耗时和优化之后Sql语句的 ...

  8. sql server 小记——分区表(上)

    我们知道很多事情都存在一个分治的思想,同样的道理我们也可以用到数据表上,当一个表很大很大的时候,我们就会想到将表拆 分成很多小表,查询的时候就到各个小表去查,最后进行汇总返回给调用方来加速我们的查询速 ...

  9. sql server 小记——分区表

    我们知道很多事情都存在一个分治的思想,同样的道理我们也可以用到数据表上,当一个表很大很大的时候,我们就会想到将表拆 分成很多小表,查询的时候就到各个小表去查,最后进行汇总返回给调用方来加速我们的查询速 ...

随机推荐

  1. Java中Calendar常用方法总结

    //获取当前时刻yyyy-MM-dd HH:mm:ss Calendar calendar = Calendar.getInstance(); SimpleDateFormat sdf = new S ...

  2. Oracle 12c 多租户 CDB 与 PDB 级别 expdb 与 impdb(表、用户、全库)

    Oracle 数据库 12 c 多租户下,如何在容器数据库 (CDB) 和可插拔数据库 (PDB) 中使用 expdb 与 impdp (数据泵) 呢? 我们一起探讨下PDB 下进行表级,用户级别,全 ...

  3. bzoj 2716 [Violet 3]天使玩偶——KDtree

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2716 第三道KDtree!仍旧是模板.还有CDQ分治做法,见下面. 数组迷之开大?(开6e5 ...

  4. JavaScript运行机制与setTimeout

    前段时间,老板交给了我一个任务:通过setTimeout来延后网站某些复杂资源的请求.正好借此机会,将JavaScript运行机制和setTimeout重新认真思考一遍,并将我对它们的理解整理如下. ...

  5. 计算MySQL的内存峰值公式 (转)

    -- 计算MySQL的内存峰值公式,计算所有的连接满了的情况下: select (@@key_buffer_size + @@query_cache_size + @@tmp_table_size   ...

  6. js---倒计时的自动跳转.html

    ============================================================================== 倒计时的自动跳转.html <!DO ...

  7. Mac For Mongodb安装启动、停止及启动授权

    1.到Mongodb官网下载相应的安装包 地址:https://www.mongodb.com/download-center?jmp=nav#community 2.Mac Mongodb安装过程 ...

  8. BadImageFormatException,未能加载正确的程序集XXX的解决办法

    BadImageFormatException,未能加载正确的程序集XXX的解决办法 IDE:VS2010 语言:C# 异常:System.BadImageFormatException,未能加载正确 ...

  9. Hadoop Reducer个数设置

    在默认情况下,一个MapReduce Job如果不设置Reducer的个数,那么Reducer的个数为1.具体,可以通过JobConf.setNumReduceTasks(int numOfReduc ...

  10. Spring入门第六课

    XML配置里的Bean自动装配 Spring IOC容器可以自动装配Bean.需要做的仅仅是在<bean>的autowire属性里指定自动装配的模式 ByType(根据类型自动装配):若I ...