在尝试优化对Azure SQL Db上的表的访问时,我发现了此link。
现在我的主要问题都在这张table上,它的定义是
CREATE TABLE dbo.ProductInstance
(
Id int IDENTITY
CONSTRAINT PK_ProductInstance
PRIMARY KEY,
ProductInstanceSeriesId int NOT NULL
CONSTRAINT FK_ProductInstance_ProductInstanceSeries_ProductInstanceSeriesId
REFERENCES dbo.ProductInstanceSeries,
Title nvarchar(256),
Description nvarchar(1024),
StartDateTime datetime2 NOT NULL,
EndDateTime datetime2 NOT NULL,
Availability int NOT NULL,
InitialAvailability int NOT NULL,
GuideUserId int
CONSTRAINT FK_ProductInstance_User_GuideUserId
REFERENCES dbo.[User],
SignupUserId int
CONSTRAINT FK_ProductInstance_User_SignupUserId
REFERENCES dbo.[User],
GroupNumber int NOT NULL,
IsActive bit NOT NULL,
IsDeleted bit NOT NULL,
IsPrivate bit NOT NULL,
GuideNote nvarchar(max),
OfficeNote nvarchar(max),
CreatedByUserId int NOT NULL,
CreatedOnUtc datetime2 NOT NULL,
LastModifiedOnUtc datetime2,
DeletedOnUtc datetime2,
ProductId int,
MappedId int,
ActivityId int,
ActivityInstanceId varchar(50),
LastTimeChangedDateTime date,
TimeChangeConfirmed bit,
StartedAt datetime2,
ProductInventoryId int
CONSTRAINT FK_ProductInstance_ProductInventory_ProductInventoryId
REFERENCES dbo.ProductInventory
ON DELETE CASCADE
)
go
大多数搜索都是在StartAt / EndAt字段上完成的,所以我需要了解如何在这些字段上进行分区。
在示例中,它在Timestamp列上推理,而在我当前的实现中我没有一个Timestamp列...我应该添加一个Timestamp列还是可以在Datetime 2字段上推理?
看看我粘贴的链接中的代码
CREATE TABLE DemoPartitionTable
(
ID int,
[Timestamp] datetime PRIMARY KEY,
[Sampletext] varchar(100)
)
ON PS_Date ([Timestamp]);
GO
INSERT INTO DemoPartitionTable (id, [TimeStamp],[SampleText])
SELECT '1', '20191231','Year 2019' UNION ALL
SELECT '2', '20211231','Year 2021' UNION ALL
SELECT '1', '20210111','Year 2021' UNION ALL
SELECT '1', '20210630','Year 2021'
1条答案
按热度按时间toiithl61#
对表(dbo.ProductInstance)分区Azure SQL数据库中的现有表
首先创建一个分区函数,该函数定义如何对数据进行分区。可以使用CREATE PARTITION FUNCTION语句创建分区函数。例如,可以按日期对表进行分区,每个分区包含特定日期范围的数据。
按日期对表创建分区函数
**创建将分区Map到文件组的分区方案。**您可以使用CREATE PARTITION SCHEME语句创建分区方案。
--创建分区方案,将分区Map到文件组
使用与现有表相同的架构创建新表,但应用分区方案。可以将CREATE TABLE语句与ON子句一起使用,为新表指定分区方案。
--使用与现有表相同的架构创建新的分区表
将现有表中的数据插入到新的分区表中。可以使用INSERT INTO语句将现有表中的数据插入到新的分区表中。将现有表中的数据插入到新的分区表中
删除现有表并将新分区表重命名为原始表名。--删除现有表并将新分区表重命名为原始表名