sql - 如何索引和分区表
问题描述
我需要使用 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]
?我可以在索引后执行此操作,还是必须重新创建表,然后分区然后索引?谢谢
解决方案
我需要对一个巨大但简单的表(1.27 亿行)进行索引和分区以加快查询速度,
这不是分区的用途。它可能会更快,但分区更多是一种可管理性功能,并且是一种允许您的工作负载随着数据量的增长而不会变慢的功能。注意不慢不等于快。
分区是提高性能的一项有用功能,但它远非灵丹妙药。列存储在提高大型表的查询性能方面通常要好得多,并且可以与分区结合使用。
如何将此应用于名为 [Table] 的表及其名为 [Month] 的列?
此处记录了该过程:将现有索引移动到不同的文件组
将表移动到分区方案与将其移动到不同的文件组相同。
推荐阅读
- java - 使用 PageRequest 上的模型参考排序不起作用
- android - 如何从 Jetpack compose 中的 drawable 加载图像?
- firebase - firebase admin sdk 身份验证在本地失败,getaddrinfo ENOTFOUND
- tensorflow - 如何将 VGG 从暗网转换为张量流?
- c++ - 2wd蓝牙控制汽车无法停止的问题
- c++ - 如何将 C++ 类构造函数的值作为此类方法的默认参数传递?
- asp.net-core - EnterpriseLibrary.Data.NetCore - 使用 GenericDatabase 的连接不支持参数发现
- excel - 无法计算每个单元格中出现的某些标志
- python - 如何从数据库的属性中派生特定元素并将它们连接到主键?
- php - PHP Socket Client 只发送和接收一条消息