Skip to content

Commit f864b60

Browse files
Merge pull request #31194 from dimitri-furman/dfurman/columnstore-improvements
Add recently added columnstore features
2 parents aec41f5 + dc74428 commit f864b60

3 files changed

Lines changed: 6 additions & 5 deletions

File tree

docs/relational-databases/indexes/columnstore-indexes-design-guidance.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: "Columnstore indexes - Design guidance"
33
description: "High-level recommendations for designing columnstore indexes."
44
author: MikeRayMSFT
55
ms.author: mikeray
6-
ms.date: 10/14/2022
6+
ms.date: 07/23/2024
77
ms.service: sql
88
ms.subservice: table-view-index
99
ms.topic: conceptual
@@ -40,7 +40,7 @@ Here is a summary of the options and recommendations.
4040
| Columnstore option | Recommendations for when to use | Compression |
4141
| :----------------- | :------------------- | :---------- |
4242
| [Clustered columnstore index](#use-a-clustered-columnstore-index-for-large-data-warehouse-tables) | Use for:<br /><br />1) Traditional data warehouse workload with a star or snowflake schema<br /><br />2) Internet of Things (IOT) workloads that insert large volumes of data with minimal updates and deletes. | Average of 10x |
43-
| [Ordered clustered columnstore index](#use-an-ordered-clustered-columnstore-index-for-large-data-warehouse-tables) | *Applies to [!INCLUDE[ssazuresynapse-md](../../includes/ssazuresynapse-md.md)] and [!INCLUDE[sql-server-2022](../../includes/sssql22-md.md)] and above*<br />Use when a clustered columnstore index is queried via a single ordered predicate column or column set. This guidance is similar to choosing the key column(s) for a rowstore clustered index, though the compressed underlying rowgroups behave differently. For more information, see [CREATE COLUMNSTORE INDEX](../../t-sql/statements/create-columnstore-index-transact-sql.md#order) and [Performance tuning with ordered clustered columnstore index](/azure/synapse-analytics/sql-data-warehouse/performance-tuning-ordered-cci). | Average of 10x |
43+
| [Ordered clustered columnstore index](#use-an-ordered-clustered-columnstore-index-for-large-data-warehouse-tables) | *Applies to [!INCLUDE[ssazuresynapse-md](../../includes/ssazuresynapse-md.md)], [!INCLUDE [ssazure-sqldb](../../includes/ssazure-sqldb.md)], [!INCLUDE [ssazuremi](../../includes/ssazuremi-md.md)] with the always-up-to-date update policy, and [!INCLUDE[sql-server-2022](../../includes/sssql22-md.md)] and later*<br />Use when a clustered columnstore index is queried via a single ordered predicate column or column set. This guidance is similar to choosing the key column(s) for a rowstore clustered index, though the compressed underlying rowgroups behave differently. For more information, see [CREATE COLUMNSTORE INDEX](../../t-sql/statements/create-columnstore-index-transact-sql.md#order) and [Performance tuning with ordered clustered columnstore index](/azure/synapse-analytics/sql-data-warehouse/performance-tuning-ordered-cci). | Average of 10x |
4444
| [Nonclustered B-tree indexes on a clustered columnstore index](#add-b-tree-nonclustered-indexes-for-efficient-table-seeks) | Use to:<br /><br /> 1. Enforce primary key and foreign key constraints on a clustered columnstore index.<br /><br /> 2. Speed up queries that search for specific values or small ranges of values.<br /><br /> 3. Speed up updates and deletes of specific rows.| 10x on average plus some additional storage for the NCIs.|
4545
| [Nonclustered columnstore index on a disk-based heap or B-tree index](#add-b-tree-nonclustered-indexes-for-efficient-table-seeks) | Use for:<br /><br />1) An OLTP workload that has some analytics queries. You can drop B-tree indexes created for analytics and replace them with one nonclustered columnstore index.<br /><br />2) Many traditional OLTP workloads that perform Extract Transform and Load (ETL) operations to move data to a separate data warehouse. You can eliminate ETL and a separate data warehouse by creating a nonclustered columnstore index on some of the OLTP tables. | NCCI is an additional index that requires 10% more storage on average.|
4646
| [Columnstore index on an in-memory table](#use-a-nonclustered-columnstore-index-for-real-time-analytics) | Same recommendations as nonclustered columnstore index on a disk-based table, except the base table is an in-memory table. | Columnstore index is an additional index.|

docs/relational-databases/indexes/columnstore-indexes-what-s-new.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: "This article explains features by version and the latest new featu
44
author: MikeRayMSFT
55
ms.author: mikeray
66
ms.reviewer: wiassaf
7-
ms.date: 02/01/2024
7+
ms.date: 07/23/2024
88
ms.service: sql
99
ms.subservice: table-view-index
1010
ms.topic: conceptual
@@ -45,6 +45,7 @@ monikerRange: ">=aps-pdw-2016||=azuresqldb-current||=azure-sqldw-latest||>=sql-s
4545
|Columnstore index can have a non-persisted computed column||||yes|yes|yes|||
4646
|Tuple mover background merge support|||||yes|yes|yes|yes|
4747
|Ordered clustered columnstore indexes||||||yes|yes|yes|
48+
|Ordered non-clustered columnstore indexes|||||||yes||
4849

4950
<sup>1</sup> For [!INCLUDE [ssSDS](../../includes/sssds-md.md)], columnstore indexes are available in [!INCLUDE [ssazure-sqldb](../../includes/ssazure-sqldb.md)] DTU Premium tiers, DTU Standard tiers - S3 and above, and all vCore tiers. For [!INCLUDE [sssql16-md](../../includes/sssql16-md.md)] SP1 and later versions, columnstore indexes are available in all editions. For [!INCLUDE [sssql16-md](../../includes/sssql16-md.md)] (before SP1) and earlier versions, columnstore indexes are only available in Enterprise Edition.
5051

docs/t-sql/statements/create-columnstore-index-transact-sql.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: CREATE COLUMNSTORE INDEX converts a rowstore table to a clustered c
44
author: markingmyname
55
ms.author: maghan
66
ms.reviewer: randolphwest
7-
ms.date: 03/06/2024
7+
ms.date: 07/23/2024
88
ms.service: sql
99
ms.subservice: t-sql
1010
ms.topic: reference
@@ -125,7 +125,7 @@ Specifies the one-, two-, or three-part name of the table to be stored as a clus
125125

126126
#### ORDER
127127

128-
*Applies to [!INCLUDE[ssazuresynapse-md](../../includes/ssazuresynapse-md.md)], [!INCLUDE[ssPDW](../../includes/sspdw-md.md)], and [!INCLUDE[sssql22-md](../../includes/sssql22-md.md)] and later*
128+
*Applies to [!INCLUDE[ssazuresynapse-md](../../includes/ssazuresynapse-md.md)], [!INCLUDE[ssPDW](../../includes/sspdw-md.md)], [!INCLUDE [ssazure-sqldb](../../includes/ssazure-sqldb.md)], [!INCLUDE [ssazuremi](../../includes/ssazuremi-md.md)] with the always-up-to-date update policy, and [!INCLUDE[sssql22-md](../../includes/sssql22-md.md)] and later*
129129

130130
Use the `column_store_order_ordinal` column in [sys.index_columns](../../relational-databases/system-catalog-views/sys-index-columns-transact-sql.md) to determine the order of the columns for a clustered columnstore index. This aids with [segment elimination](../../relational-databases/indexes/columnstore-indexes-query-performance.md#segment-elimination), especially with string data. For more information, see [Performance tuning with ordered clustered columnstore index](/azure/synapse-analytics/sql-data-warehouse/performance-tuning-ordered-cci) and [Columnstore indexes - Design guidance](../../relational-databases/indexes/columnstore-indexes-design-guidance.md).
131131

0 commit comments

Comments
 (0)