首页 > 解决方案 > 如何索引和分区表

问题描述

我需要使用 SQL Server Management Studio 对一个巨大但简单的表(1.27 亿行)进行索引和分区以加快查询速度。它有 99 个每月数据块,每个月有一个整数 1 到 99。我想将每个月分区到每个分区中,并索引[ID][Month]列,因为我需要查询表来比较每个月与其前一个[Month]和每个人的[ID]。我该怎么做呢?我已经创建了分区函数

CREATE PARTITION FUNCTION PF_Monthly(int)
AS RANGE RIGHT FOR VALUES (
1,2,3,4,5,6,7,8,9,10
,11,12,13,14,15,16,17,18,19,20
,21,22,23,24,25,26,27,28,29,30
,31,32,33,34,35,36,37,38,39,40
,41,42,43,44,45,46,47,48,49,50
,51,52,53,54,55,56,57,58,59,60
,61,62,63,64,65,66,67,68,69,70
,71,72,73,74,75,76,77,78,79,80
,81,82,83,84,85,86,87,88,89,90
,91,92,93,94,95,96,97,98,99
)
GO

和方案:

CREATE PARTITION SCHEME PS_Monthly
AS PARTITION PF_Monthly
ALL TO ( [PRIMARY] );
GO

如何将此应用于名为的表[Table]及其名为的列[Month]?我可以在索引后执行此操作,还是必须重新创建表,然后分区然后索引?谢谢

标签: sqlsql-server

解决方案


我需要对一个巨大但简单的表(1.27 亿行)进行索引和分区以加快查询速度,

这不是分区的用途。它可能会更快,但分区更多是一种可管理性功能,并且是一种允许您的工作负载随着数据量的增长而不会变慢的功能。注意不慢不等于

分区是提高性能的一项有用功能,但它远非灵丹妙药。列存储在提高大型表的查询性能方面通常要好得多,并且可以与分区结合使用。

如何将此应用于名为 [Table] 的表及其名为 [Month] 的列?

此处记录了该过程:将现有索引移动到不同的文件组

将表移动到分区方案与将其移动到不同的文件组相同。


推荐阅读