diff --git a/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Migrations/99.sql b/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Migrations/99.sql index 0f14432992..f95d8a2703 100644 --- a/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Migrations/99.sql +++ b/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Migrations/99.sql @@ -300,27 +300,27 @@ CREATE TABLE dbo.DateTimeSearchParam ( ALTER TABLE dbo.DateTimeSearchParam SET (LOCK_ESCALATION = AUTO); CREATE CLUSTERED INDEX IXC_DateTimeSearchParam - ON dbo.DateTimeSearchParam(ResourceTypeId, ResourceSurrogateId, SearchParamId) + ON dbo.DateTimeSearchParam(ResourceTypeId, ResourceSurrogateId, SearchParamId) WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId); CREATE INDEX IX_SearchParamId_StartDateTime_EndDateTime_INCLUDE_IsLongerThanADay_IsMin_IsMax ON dbo.DateTimeSearchParam(SearchParamId, StartDateTime, EndDateTime) - INCLUDE(IsLongerThanADay, IsMin, IsMax) + INCLUDE(IsLongerThanADay, IsMin, IsMax) WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId); CREATE INDEX IX_SearchParamId_EndDateTime_StartDateTime_INCLUDE_IsLongerThanADay_IsMin_IsMax ON dbo.DateTimeSearchParam(SearchParamId, EndDateTime, StartDateTime) - INCLUDE(IsLongerThanADay, IsMin, IsMax) + INCLUDE(IsLongerThanADay, IsMin, IsMax) WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId); CREATE INDEX IX_SearchParamId_StartDateTime_EndDateTime_INCLUDE_IsMin_IsMax_WHERE_IsLongerThanADay_1 ON dbo.DateTimeSearchParam(SearchParamId, StartDateTime, EndDateTime) - INCLUDE(IsMin, IsMax) WHERE IsLongerThanADay = 1 + INCLUDE(IsMin, IsMax) WHERE IsLongerThanADay = 1 WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId); CREATE INDEX IX_SearchParamId_EndDateTime_StartDateTime_INCLUDE_IsMin_IsMax_WHERE_IsLongerThanADay_1 ON dbo.DateTimeSearchParam(SearchParamId, EndDateTime, StartDateTime) - INCLUDE(IsMin, IsMax) WHERE IsLongerThanADay = 1 + INCLUDE(IsMin, IsMax) WHERE IsLongerThanADay = 1 WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId); IF NOT EXISTS (SELECT 1 @@ -436,19 +436,19 @@ CREATE TABLE dbo.NumberSearchParam ( ALTER TABLE dbo.NumberSearchParam SET (LOCK_ESCALATION = AUTO); CREATE CLUSTERED INDEX IXC_NumberSearchParam - ON dbo.NumberSearchParam(ResourceTypeId, ResourceSurrogateId, SearchParamId) + ON dbo.NumberSearchParam(ResourceTypeId, ResourceSurrogateId, SearchParamId) WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId); CREATE INDEX IX_SearchParamId_SingleValue_WHERE_SingleValue_NOT_NULL - ON dbo.NumberSearchParam(SearchParamId, SingleValue) WHERE SingleValue IS NOT NULL + ON dbo.NumberSearchParam(SearchParamId, SingleValue) WHERE SingleValue IS NOT NULL WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId); CREATE INDEX IX_SearchParamId_LowValue_HighValue - ON dbo.NumberSearchParam(SearchParamId, LowValue, HighValue) + ON dbo.NumberSearchParam(SearchParamId, LowValue, HighValue) WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId); CREATE INDEX IX_SearchParamId_HighValue_LowValue - ON dbo.NumberSearchParam(SearchParamId, HighValue, LowValue) + ON dbo.NumberSearchParam(SearchParamId, HighValue, LowValue) WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId); CREATE TABLE dbo.Parameters ( @@ -497,22 +497,22 @@ CREATE TABLE dbo.QuantitySearchParam ( ALTER TABLE dbo.QuantitySearchParam SET (LOCK_ESCALATION = AUTO); CREATE CLUSTERED INDEX IXC_QuantitySearchParam - ON dbo.QuantitySearchParam(ResourceTypeId, ResourceSurrogateId, SearchParamId) + ON dbo.QuantitySearchParam(ResourceTypeId, ResourceSurrogateId, SearchParamId) WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId); CREATE INDEX IX_SearchParamId_QuantityCodeId_SingleValue_INCLUDE_SystemId_WHERE_SingleValue_NOT_NULL ON dbo.QuantitySearchParam(SearchParamId, QuantityCodeId, SingleValue) - INCLUDE(SystemId) WHERE SingleValue IS NOT NULL + INCLUDE(SystemId) WHERE SingleValue IS NOT NULL WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId); CREATE INDEX IX_SearchParamId_QuantityCodeId_LowValue_HighValue_INCLUDE_SystemId ON dbo.QuantitySearchParam(SearchParamId, QuantityCodeId, LowValue, HighValue) - INCLUDE(SystemId) + INCLUDE(SystemId) WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId); CREATE INDEX IX_SearchParamId_QuantityCodeId_HighValue_LowValue_INCLUDE_SystemId ON dbo.QuantitySearchParam(SearchParamId, QuantityCodeId, HighValue, LowValue) - INCLUDE(SystemId) + INCLUDE(SystemId) WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId); CREATE TABLE dbo.ReferenceSearchParam ( @@ -616,17 +616,17 @@ CREATE INDEX IX_ResourceTypeId_HistoryTransactionId ON PartitionScheme_ResourceTypeId (ResourceTypeId); CREATE UNIQUE NONCLUSTERED INDEX IX_Resource_ResourceTypeId_ResourceId_Version - ON dbo.Resource(ResourceTypeId, ResourceId, Version) + ON dbo.Resource(ResourceTypeId, ResourceId, Version) WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId); CREATE UNIQUE NONCLUSTERED INDEX IX_Resource_ResourceTypeId_ResourceId ON dbo.Resource(ResourceTypeId, ResourceId) - INCLUDE(Version, IsDeleted) WHERE IsHistory = 0 + INCLUDE(Version, IsDeleted) WHERE IsHistory = 0 WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId); CREATE UNIQUE NONCLUSTERED INDEX IX_Resource_ResourceTypeId_ResourceSurrgateId ON dbo.Resource(ResourceTypeId, ResourceSurrogateId) WHERE IsHistory = 0 - AND IsDeleted = 0 + AND IsDeleted = 0 WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId); CREATE TABLE dbo.ResourceChangeData ( diff --git a/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Sql/Tables/DateTimeSearchParam.sql b/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Sql/Tables/DateTimeSearchParam.sql index a00e0fa536..71b63e4718 100644 --- a/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Sql/Tables/DateTimeSearchParam.sql +++ b/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Sql/Tables/DateTimeSearchParam.sql @@ -19,6 +19,7 @@ ON dbo.DateTimeSearchParam ResourceSurrogateId, SearchParamId ) +WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId(ResourceTypeId) CREATE INDEX IX_SearchParamId_StartDateTime_EndDateTime_INCLUDE_IsLongerThanADay_IsMin_IsMax @@ -34,6 +35,7 @@ INCLUDE IsMin, IsMax ) +WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId) CREATE INDEX IX_SearchParamId_EndDateTime_StartDateTime_INCLUDE_IsLongerThanADay_IsMin_IsMax @@ -49,6 +51,7 @@ INCLUDE IsMin, IsMax ) +WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId) CREATE INDEX IX_SearchParamId_StartDateTime_EndDateTime_INCLUDE_IsMin_IsMax_WHERE_IsLongerThanADay_1 @@ -64,6 +67,7 @@ INCLUDE IsMax ) WHERE IsLongerThanADay = 1 +WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId(ResourceTypeId) CREATE INDEX IX_SearchParamId_EndDateTime_StartDateTime_INCLUDE_IsMin_IsMax_WHERE_IsLongerThanADay_1 @@ -79,5 +83,6 @@ INCLUDE IsMax ) WHERE IsLongerThanADay = 1 +WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId(ResourceTypeId) diff --git a/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Sql/Tables/NumberSearchParam.sql b/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Sql/Tables/NumberSearchParam.sql index 594784c23c..bbdc5ec3e6 100644 --- a/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Sql/Tables/NumberSearchParam.sql +++ b/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Sql/Tables/NumberSearchParam.sql @@ -17,6 +17,7 @@ ON dbo.NumberSearchParam ResourceSurrogateId, SearchParamId ) +WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId) CREATE INDEX IX_SearchParamId_SingleValue_WHERE_SingleValue_NOT_NULL @@ -26,6 +27,7 @@ ON dbo.NumberSearchParam SingleValue ) WHERE SingleValue IS NOT NULL +WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId) CREATE INDEX IX_SearchParamId_LowValue_HighValue @@ -35,6 +37,7 @@ ON dbo.NumberSearchParam LowValue, HighValue ) +WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId) CREATE INDEX IX_SearchParamId_HighValue_LowValue @@ -44,5 +47,6 @@ ON dbo.NumberSearchParam HighValue, LowValue ) +WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId) diff --git a/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Sql/Tables/QuantitySearchParam.sql b/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Sql/Tables/QuantitySearchParam.sql index ffc55f90a0..ecbab77a30 100644 --- a/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Sql/Tables/QuantitySearchParam.sql +++ b/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Sql/Tables/QuantitySearchParam.sql @@ -19,6 +19,7 @@ ON dbo.QuantitySearchParam ResourceSurrogateId, SearchParamId ) +WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId) CREATE INDEX IX_SearchParamId_QuantityCodeId_SingleValue_INCLUDE_SystemId_WHERE_SingleValue_NOT_NULL @@ -33,6 +34,7 @@ INCLUDE SystemId ) WHERE SingleValue IS NOT NULL +WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId) CREATE INDEX IX_SearchParamId_QuantityCodeId_LowValue_HighValue_INCLUDE_SystemId @@ -47,6 +49,7 @@ INCLUDE ( SystemId ) +WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId) CREATE INDEX IX_SearchParamId_QuantityCodeId_HighValue_LowValue_INCLUDE_SystemId @@ -61,5 +64,6 @@ INCLUDE ( SystemId ) +WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId) diff --git a/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Sql/Tables/Resource.sql b/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Sql/Tables/Resource.sql index 9008e20cdf..c8e5c0f34b 100644 --- a/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Sql/Tables/Resource.sql +++ b/src/Microsoft.Health.Fhir.SqlServer/Features/Schema/Sql/Tables/Resource.sql @@ -40,8 +40,8 @@ CREATE TABLE dbo.Resource ALTER TABLE dbo.Resource SET ( LOCK_ESCALATION = AUTO ) -CREATE INDEX IX_ResourceTypeId_TransactionId ON dbo.Resource (ResourceTypeId, TransactionId) WHERE TransactionId IS NOT NULL ON PartitionScheme_ResourceTypeId (ResourceTypeId) -CREATE INDEX IX_ResourceTypeId_HistoryTransactionId ON dbo.Resource (ResourceTypeId, HistoryTransactionId) WHERE HistoryTransactionId IS NOT NULL ON PartitionScheme_ResourceTypeId (ResourceTypeId) +CREATE INDEX IX_ResourceTypeId_TransactionId ON dbo.Resource (ResourceTypeId, TransactionId) WHERE TransactionId IS NOT NULL WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId) +CREATE INDEX IX_ResourceTypeId_HistoryTransactionId ON dbo.Resource (ResourceTypeId, HistoryTransactionId) WHERE HistoryTransactionId IS NOT NULL WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId (ResourceTypeId) CREATE UNIQUE NONCLUSTERED INDEX IX_Resource_ResourceTypeId_ResourceId_Version ON dbo.Resource ( @@ -49,6 +49,7 @@ CREATE UNIQUE NONCLUSTERED INDEX IX_Resource_ResourceTypeId_ResourceId_Version O ResourceId, Version ) +WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId(ResourceTypeId) CREATE UNIQUE NONCLUSTERED INDEX IX_Resource_ResourceTypeId_ResourceId ON dbo.Resource @@ -62,6 +63,7 @@ INCLUDE -- We want the query in UpsertResource, which is done with UPDLOCK AND H IsDeleted ) WHERE IsHistory = 0 +WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId(ResourceTypeId) CREATE UNIQUE NONCLUSTERED INDEX IX_Resource_ResourceTypeId_ResourceSurrgateId ON dbo.Resource @@ -70,5 +72,6 @@ CREATE UNIQUE NONCLUSTERED INDEX IX_Resource_ResourceTypeId_ResourceSurrgateId O ResourceSurrogateId ) WHERE IsHistory = 0 AND IsDeleted = 0 +WITH (DATA_COMPRESSION = PAGE) ON PartitionScheme_ResourceTypeId(ResourceTypeId) GO