sql server查询分区表

时间:2019-02-07 10:31:54

标签: sql sql-server sql-server-2008-r2

是否可以使用分区键列而不是分区号来获取表分区的所有行?

select * from partitioned_table
where $partition.fpartfunction(key_column) = 1

据我所知,以上代码返回了分区1中的所有行。我想知道是否可以做类似的事情:

伪代码:

select * from partitioned_table
    where $partition.get_me_all_rows_in_partition_with_Keycolumn_year = '2019' 

1 个答案:

答案 0 :(得分:0)

要使用分区列而不是直接通过分区函数从分区中获取所有行,请指定一个与实际分区边界匹配的WHERE子句。 SQL Server使用范围分区,因此您需要指定下边界值(第一个分区除外)和上边界值(最后一个分区除外)。

下边界谓词必须是>分区函数,因为分区边界不包括边界值。相反,下界谓词必须是具有RANGE LEFT分区函数的>=,因为分区边界不包括边界值。

下面是在RANGE RIGHT数据类型分区列上进行年度分区的示例。

date