Sql 如何对表进行索引和分区

Sql 如何对表进行索引和分区,sql,sql-server,Sql,Sql Server,我需要使用SQLServerManagementStudio对一个巨大但简单的表(1.27亿行)进行索引和分区,以加快查询速度。它有99个月数据块,每个月有一个1到99的整数。我想将每个月划分为每个分区,并在[ID]和[month]列上建立索引,因为我需要查询表,将每个月与其之前的[month]和每个人的[ID]进行比较。我该怎么做?我已经创建了配分函数 CREATE PARTITION FUNCTION PF_Monthly(int) AS RANGE RIGHT FOR VALUES ( 1

我需要使用SQLServerManagementStudio对一个巨大但简单的表(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]
的列?我可以在索引后执行此操作,还是必须重新创建表,然后进行分区,然后进行索引?谢谢

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

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

分割对于性能来说是一个有用的特性,但它远不是一个灵丹妙药。在提高大型表上的查询性能方面,它们通常要好得多,并且可以与分区相结合

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

此处记录了该过程:

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

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

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

分割对于性能来说是一个有用的特性,但它远不是一个灵丹妙药。在提高大型表上的查询性能方面,它们通常要好得多,并且可以与分区相结合

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

此处记录了该过程:


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

谢谢。我刚刚试着将索引移动到分区方案,结果发现它出错了。我右键单击索引,单击属性,转到存储,检查分区方案,选择上面的PS_月度方案,然后单击确定。然后它在重新创建时出错,说:当设置了PartitionScheme时,PartitionSchemeParameters需要为非空。添加表定义和操作的TSQL。无法按照GUI中的描述进行操作。很抱歉,我不知道如何操作,我找到了表定义,但无法将其放入注释中。我刚刚尝试在[Month]上创建一个columnstore列,它说无法在非持久化列上执行此操作,我现在正在进行持久化。谢谢。我刚刚试着将索引移动到分区方案,结果发现它出错了。我右键单击索引,单击属性,转到存储,检查分区方案,选择上面的PS_月度方案,然后单击确定。然后它在重新创建时出错,说:当设置了PartitionScheme时,PartitionSchemeParameters需要为非空。添加表定义和操作的TSQL。无法按照GUI中的描述进行操作。很抱歉,我不知道如何操作,我找到了表定义,但无法将其放入注释中。我刚刚尝试在[Month]上创建columnstore列,但它表示无法在非持久列上执行此操作,我现在正在努力持久化它。在99%的情况下,分区不会加快查询速度。正确的索引将被删除。1.27亿行相对较小。在99%的情况下,分区不会加快查询速度。正确的索引将被删除。1.27亿行相对较小。