列ストア インデックス: 概要Columnstore indexes: Overview

適用対象: ○SQL Server ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

列ストア インデックスは、大規模なデータ ウェアハウス ファクト テーブルを格納し、そのテーブルにクエリを実行する際の標準となります。Columnstore indexes are the standard for storing and querying large data warehousing fact tables. このインデックスは列ベースのデータ ストレージとクエリ処理を使用して、従来の行指向ストレージと比較して最大 10 倍のクエリ パフォーマンスをデータ ウェアハウスで実現します。This index uses column-based data storage and query processing to achieve gains up to 10 times the query performance in your data warehouse over traditional row-oriented storage. また、非圧縮データ サイズと比較して、最大 10 倍のデータ圧縮を実現することも可能です。You can also achieve gains up to 10 times the data compression over the uncompressed data size. SQL Server 2016 (13.x)SQL Server 2016 (13.x) 以降、列ストア インデックスでは運用分析が可能になりました。トランザクション ワークロードでパフォーマンスの高いリアルタイム分析を実行することができます。Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), columnstore indexes enable operational analytics: the ability to run performant real-time analytics on a transactional workload.

関連するシナリオについての詳細は次のとおりです。Learn about a related scenario:

列ストア インデックスとはWhat is a columnstore index?

列ストア インデックスは、列指向データ形式を使用してデータを格納、取得、および管理するためのテクノロジです ("列ストア" と呼ばれます)。A columnstore index is a technology for storing, retrieving, and managing data by using a columnar data format, called a columnstore.

主な用語と概念Key terms and concepts

ここでは、列ストア インデックスに関連する主な用語と概念について説明します。The following key terms and concepts are associated with columnstore indexes.

列ストアColumnstore

列ストアは、行と列を含むテーブルとして論理的に編成され、列方向のデータ形式で物理的に格納されているデータです。A columnstore is data that's logically organized as a table with rows and columns, and physically stored in a column-wise data format.

行ストアRowstore

行ストアは、行と列を含むテーブルとして論理的に編成され、行方向のデータ形式で物理的に格納されているデータです。A rowstore is data that's logically organized as a table with rows and columns, and physically stored in a row-wise data format. この形式は、リレーショナル テーブル データを格納する従来の方法です。This format is the traditional way to store relational table data. SQL ServerSQL Server では、行ストアは、基になるデータ ストレージ形式が、ヒープ、クラスター化インデックス、またはメモリ最適化テーブルであるテーブルを示します。In SQL ServerSQL Server, rowstore refers to a table where the underlying data storage format is a heap, a clustered index, or a memory-optimized table.

注意

列ストア インデックスの説明では、データ ストレージの形式を強調するために行ストアと列ストア という用語が使用されます。In discussions about columnstore indexes, the terms rowstore and columnstore are used to emphasize the format for the data storage.

行グループRowgroup

行グループは、同時に列ストア形式に圧縮される行のグループです。A rowgroup is a group of rows that are compressed into columnstore format at the same time. 通常、1 つの行グループには、行グループあたりの最大行数である 1,048,576 行が含まれます。A rowgroup usually contains the maximum number of rows per rowgroup, which is 1,048,576 rows.

高パフォーマンスと高い圧縮率を実現するために、列ストア インデックスは、テーブルを行グループにスライスし、各行グループを列方向に圧縮します。For high performance and high compression rates, the columnstore index slices the table into rowgroups, and then compresses each rowgroup in a column-wise manner. 行グループ内の行数は、高い圧縮率が実現される程度に多く、インメモリ操作の利点を得られる程度に少なくなければなりません。The number of rows in the rowgroup must be large enough to improve compression rates, and small enough to benefit from in-memory operations.

列セグメントColumn segment

列セグメントは、行グループ内のデータ列です。A column segment is a column of data from within the rowgroup.

  • それぞれの行グループには、テーブルの 1 つの列につき 1 つの列セグメントが含まれます。Each rowgroup contains one column segment for every column in the table.
  • それぞれの列セグメントは一緒に圧縮され、物理メディアに格納されます。Each column segment is compressed together and stored on physical media.

Column segmentColumn segment

クラスター化列ストア インデックスClustered columnstore index

クラスター化列ストア インデックスは、テーブル全体に対する物理ストレージです。A clustered columnstore index is the physical storage for the entire table.

クラスター化列ストア インデックスClustered columnstore index

列セグメントの断片化を低減し、パフォーマンスを高めるために、列ストア インデックスでは、一部のデータを、クラスター化インデックス ("デルタストア" と呼ばれます) と削除された行の ID の btree リストに格納することがあります。To reduce fragmentation of the column segments and improve performance, the columnstore index might store some data temporarily into a clustered index called a deltastore and a btree list of IDs for deleted rows. デルタストア操作は内部で処理されます。The deltastore operations are handled behind the scenes. 列ストア インデックスは、正しいクエリ結果を返すために、列ストアとデルタストアの両方からのクエリ結果を結合します。To return the correct query results, the clustered columnstore index combines query results from both the columnstore and the deltastore.

デルタ行グループDelta rowgroup

デルタ行グループは、列ストア インデックスでのみ使用されるクラスター化インデックスです。A delta rowgroup is a clustered index that's used only with columnstore indexes. これは、行数がしきい値に達して列ストアに移動できるまで行を格納することで、列ストアの圧縮とパフォーマンスを高めます。It improves columnstore compression and performance by storing rows until the number of rows reaches a threshold and are then moved into the columnstore.

デルタ行グループは、最大行数に達すると閉じられます。When a delta rowgroup reaches the maximum number of rows, it becomes closed. 閉じている行グループは、組ムーバー プロセスによって確認されます。A tuple-mover process checks for closed row groups. プロセスによって閉じている行グループが見つけられると、その行グループは圧縮され、列ストアに格納されます。If the process finds a closed rowgroup, it compresses the rowgroup and stores it into the columnstore.

デルタストアDeltastore

列ストア インデックスは、複数のデルタ行グループを持つことができます。A columnstore index can have more than one delta rowgroup. すべてのデルタ行グループを総称して、デルタストアと呼びます。All of the delta rowgroups are collectively called the deltastore.

大規模な一括読み込みでは、行のほとんどがデルタストアを通らずに列ストアに直接移動します。During a large bulk load, most of the rows go directly to the columnstore without passing through the deltastore. 一括読み込みの最後に位置する行の数は、行グループの最小サイズである 102,400 行を満たすには足りないことがあります。Some rows at the end of the bulk load might be too few in number to meet the minimum size of a rowgroup, which is 102,400 rows. その結果、それらの行は列ストアではなくデルタストアに移動します。As a result, the final rows go to the deltastore instead of the columnstore. 102,400 行未満の小規模な一括読み込みでは、すべての行がデルタストアに直接移動します。For small bulk loads with less than 102,400 rows, all of the rows go directly to the deltastore.

非クラスター化列ストア インデックスNonclustered columnstore index

非クラスター化列ストア インデックスとクラスター化列ストアインデックスは同じように機能します。A nonclustered columnstore index and a clustered columnstore index function the same. 異なるのは、非クラスター化列ストア インデックスが行ストア テーブルに作成されたセカンダリ インデックスであるのに対し、クラスター化インデックスはテーブル全体のプライマリ ストレージである点です。The difference is that a nonclustered index is a secondary index that's created on a rowstore table, but a clustered columnstore index is the primary storage for the entire table.

非クラスター化インデックスには、基になるテーブルの行と列の一部または全体のコピーが含まれています。The nonclustered index contains a copy of part or all of the rows and columns in the underlying table. インデックスはテーブルの 1 つ以上の列として定義され、行のフィルター処理条件をオプションで設定できます。The index is defined as one or more columns of the table and has an optional condition that filters the rows.

非クラスター化列ストア インデックスによりリアルタイム運用分析が可能になります。ここで、OLTP ワークロードは基になるクラスター化インデックスを使用します。一方、列ストア インデックスでは同時に分析が実行されます。A nonclustered columnstore index enables real-time operational analytics where the OLTP workload uses the underlying clustered index while analytics run concurrently on the columnstore index. 詳細については、「列ストアを使用したリアルタイム運用分析の概要」をご覧ください。For more information, see Get started with columnstore for real-time operational analytics.

バッチ モード実行Batch mode execution

バッチ モード実行は、複数の行をまとめて処理するためのクエリ処理方法です。Batch mode execution is a query processing method that's used to process multiple rows together. バッチ モード実行は、列ストア ストレージ形式と緊密に統合され、このストレージ形式に合わせて最適化されています。Batch mode execution is closely integrated with, and optimized around, the columnstore storage format. バッチ モード実行は、"ベクター ベースの" 実行、または "ベクター化された" 実行と呼ばれることもあります。Batch mode execution is sometimes known as vector-based or vectorized execution. 列ストア インデックスのクエリではバッチ モード実行が使用され、これによりクエリ パフォーマンスが、通常、2 から 4 倍向上します。Queries on columnstore indexes use batch mode execution, which improves query performance typically by two to four times. 詳細については、「クエリ処理アーキテクチャ ガイド」をご覧ください。For more information, see the Query processing architecture guide.

列ストア インデックスを使用する理由Why should I use a columnstore index?

列ストア インデックスにより、非常に高いレベルでデータ圧縮が実現し (通常 10 倍)、データ ウェアハウスのストレージ コストが大幅に削減されます。A columnstore index can provide a very high level of data compression, typically by 10 times, to significantly reduce your data warehouse storage cost. 分析においても、列ストア インデックスは btree インデックスと比べて桁違いに優れたパフォーマンスを発揮します。For analytics, a columnstore index offers an order of magnitude better performance than a btree index. 列ストア インデックスは、データ ウェアハウスと分析のワークロードに対して推奨されるデータ ストレージ形式です。Columnstore indexes are the preferred data storage format for data warehousing and analytics workloads. SQL Server 2016 (13.x)SQL Server 2016 (13.x)以降、運用ワークロードにおけるリアルタイム分析で列ストア インデックスを使用できます。Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x), you can use columnstore indexes for real-time analytics on your operational workload.

列ストア インデックスが高速に動作する理由:Reasons why columnstore indexes are so fast:

  • 列には同じドメインの値 (一般的に似たような値) が格納されます。これにより圧縮率が上がります。Columns store values from the same domain and commonly have similar values, which result in high compression rates. システム内における I/O のボトルネックが最小化または除外され、メモリ使用量が大幅に減少します。I/O bottlenecks in your system are minimized or eliminated, and memory footprint is reduced significantly.

  • 高い圧縮比率により、メモリ使用量が削減され、クエリのパフォーマンスが向上します。High compression rates improve query performance by using a smaller in-memory footprint. さらに、 SQL ServerSQL Server がより多くのクエリやデータ操作をインメモリで実行できるため、クエリのパフォーマンスを向上させることが可能です。In turn, query performance can improve because SQL ServerSQL Server can perform more query and data operations in memory.

  • バッチ実行では、複数の行をまとめて処理することで、クエリのパフォーマンスを高めます (通常 2 から 4 倍)。Batch execution improves query performance, typically by two to four times, by processing multiple rows together.

  • クエリはテーブルから少数の列のみを選択することが多く、物理メディアからの合計 I/O を低減します。Queries often select only a few columns from a table, which reduces total I/O from the physical media.

列ストア インデックスを使用するタイミングWhen should I use a columnstore index?

推奨されるユース ケースRecommended use cases:

行ストア インデックスと列ストア インデックスはどのように選択すればよいですか。How do I choose between a rowstore index and a columnstore index?

行ストア インデックスは、データをシークして特定の値を検索するクエリや、狭い範囲の値でのクエリを実行する場合に、最適なパフォーマンスを発揮します。Rowstore indexes perform best on queries that seek into the data, when searching for a particular value, or for queries on a small range of values. トランザクション ワークロードでは、テーブル スキャンではなく主にテーブル シークを必要とする傾向があるため、行ストア インデックスを使用してください。Use rowstore indexes with transactional workloads because they tend to require mostly table seeks instead of table scans.

列ストア インデックスは、特に大規模なテーブルで、大量のデータをスキャンする分析クエリを実行するときにパフォーマンスが高くなります。Columnstore indexes give high performance gains for analytic queries that scan large amounts of data, especially on large tables. この列ストア インデックスは、特にファクト テーブルのデータ ウェアハウスと分析のワークロードで使用します。ファクト テーブルでは、テーブル シークではなく完全なテーブル スキャンが必要になることが多いためです。Use columnstore indexes on data warehousing and analytics workloads, especially on fact tables, because they tend to require full table scans rather than table seeks.

行ストアと列ストアを同じテーブルで結合できますか。Can I combine rowstore and columnstore on the same table?

可能。Yes. SQL Server 2016 (13.x)SQL Server 2016 (13.x) 以降、更新可能な非クラスター化列ストア インデックスを、行ストア テーブルに作成できます。Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), you can create an updatable nonclustered columnstore index on a rowstore table. 列ストア インデックスには選択された列のコピーが格納されるため、このデータ用に追加の容量が必要になります。ただし、選択されたデータは平均で 10 倍に圧縮されます。The columnstore index stores a copy of the selected columns, so you need extra space for this data, but the selected data is compressed on average 10 times. 列ストア インデックスの分析と行ストア インデックスのトランザクションを同時に実行できます。You can run analytics on the columnstore index and transactions on the rowstore index at the same time. 行ストア テーブルでデータが変更されると列ストアが更新されます。このため、両方のインデックスが同じデータに対して作業を行うことになります。The columnstore is updated when data changes in the rowstore table, so both indexes work against the same data.

SQL Server 2016 (13.x)SQL Server 2016 (13.x) 以降、列ストア インデックス上に 1 つまたは複数の非クラスター化行ストア インデックスを持たせて、基になる列ストア上で効率的にテーブルを検索できるようになりました。Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), you can have one or more nonclustered rowstore indexes on a columnstore index and perform efficient table seeks on the underlying columnstore. 他のオプションも使用できます。Other options become available too. たとえば、行ストア テーブルで UNIQUE 制約を使用することで、主キー制約を適用できます。For example, you can enforce a primary key constraint by using a UNIQUE constraint on the rowstore table. 一意でない値は行ストア テーブルに挿入できないため、 SQL ServerSQL Server で列ストアにその値を挿入することはできません。Because a non-unique value fails to insert into the rowstore table, SQL ServerSQL Server can't insert the value into the columnstore.

メタデータMetadata

列ストア インデックス内のすべての列は、付加列としてメタデータに格納されます。All of the columns in a columnstore index are stored in the metadata as included columns. 列ストア インデックスはキー列を持ちません。The columnstore index doesn't have key columns.

sys.indexes (Transact-SQL)sys.indexes (Transact-SQL) sys.index_columns (Transact-SQL)sys.index_columns (Transact-SQL)
sys.partitions (Transact-SQL)sys.partitions (Transact-SQL) sys.internal_partitions (Transact-SQL)sys.internal_partitions (Transact-SQL)
sys.column_store_segments (Transact-SQL)sys.column_store_segments (Transact-SQL) sys.column_store_dictionaries (Transact-SQL)sys.column_store_dictionaries (Transact-SQL)
sys.column_store_row_groups (Transact-SQL)sys.column_store_row_groups (Transact-SQL) sys.dm_db_column_store_row_group_operational_stats (Transact-SQL)sys.dm_db_column_store_row_group_operational_stats (Transact-SQL)
sys.dm_db_column_store_row_group_physical_stats (Transact-SQL)sys.dm_db_column_store_row_group_physical_stats (Transact-SQL) sys.dm_column_store_object_pool (Transact-SQL)sys.dm_column_store_object_pool (Transact-SQL)
sys.dm_db_column_store_row_group_operational_stats (Transact-SQL)sys.dm_db_column_store_row_group_operational_stats (Transact-SQL) sys.dm_db_index_operational_stats (Transact-SQL)sys.dm_db_index_operational_stats (Transact-SQL)
sys.dm_db_index_physical_stats (Transact-SQL)sys.dm_db_index_physical_stats (Transact-SQL)

クラスター化列ストア インデックスとしてリレーショナル テーブルを指定していない限り、そのリレーショナル テーブルでは、行ストアが、基になるデータ形式として使用されます。All relational tables, unless you specify them as a clustered columnstore index, use rowstore as the underlying data format. WITH CLUSTERED COLUMNSTORE INDEX オプションを指定しない場合、CREATE TABLE によって行ストア テーブルが作成されます。CREATE TABLE creates a rowstore table unless you specify the WITH CLUSTERED COLUMNSTORE INDEX option.

CREATE TABLE ステートメントでテーブルを作成する際に、WITH CLUSTERED COLUMNSTORE INDEX オプションを指定することでそのテーブルを列ストアとして作成できます。When you create a table with the CREATE TABLE statement, you can create the table as a columnstore by specifying the WITH CLUSTERED COLUMNSTORE INDEX option. 既に、行ストア テーブルがある場合、その行ストアは、CREATE COLUMNSTORE INDEX ステートメントを使用して列ストアに変換できます。If you already have a rowstore table and want to convert it to a columnstore, you can use the CREATE COLUMNSTORE INDEX statement.

タスクTask 参照トピックReference topics Notes
テーブルを列ストアとして作成する。Create a table as a columnstore. CREATE TABLE (Transact-SQL)CREATE TABLE (Transact-SQL) SQL Server 2016 (13.x)SQL Server 2016 (13.x)以降、テーブルをクラスター化列ストア インデックスとして作成できます。Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), you can create the table as a clustered columnstore index. 最初に行ストア テーブルを作成し、次に列ストアに変換する必要はありません。You don't have to first create a rowstore table and then convert it to columnstore.
列ストア インデックスを持つメモリ テーブルを作成します。Create a memory table with a columnstore index. CREATE TABLE (Transact-SQL)CREATE TABLE (Transact-SQL) SQL Server 2016 (13.x)SQL Server 2016 (13.x)以降、列ストア インデックスを持つ、メモリ最適化テーブルを作成できます。Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), you can create a memory-optimized table with a columnstore index. 列ストア インデックスは、テーブルの作成後に ALTER TABLE ADD INDEX 構文を使用して追加することもできます。The columnstore index can also be added after the table is created by using the ALTER TABLE ADD INDEX syntax.
行ストア テーブルを列ストアに変換する。Convert a rowstore table to a columnstore. CREATE COLUMNSTORE INDEX (Transact-SQL)CREATE COLUMNSTORE INDEX (Transact-SQL) 既存のヒープまたはバイナリ ツリーを列ストアに変換します。Convert an existing heap or binary tree to a columnstore. この変換を実行するときの既存のインデックスとインデックス名の処理方法を例示します。Examples show how to handle existing indexes and also the name of the index when performing this conversion.
列ストア テーブルを行ストアに変換する。Convert a columnstore table to a rowstore. CREATE CLUSTERED INDEX (Transact-SQL)列ストア テーブルを行ストア ヒープに戻すCREATE CLUSTERED INDEX (Transact-SQL) or Convert a columnstore table back to a rowstore heap この変換は通常は必要ありませんが、状況によっては必要になる場合があります。Usually this conversion isn't necessary, but there can be times when you need to convert. 列ストアをヒープまたはクラスター化インデックスに変換する方法を例示します。Examples show how to convert a columnstore to a heap or clustered index.
行ストア テーブルで列ストア インデックスを作成する。Create a columnstore index on a rowstore table. CREATE COLUMNSTORE INDEX (Transact-SQL)CREATE COLUMNSTORE INDEX (Transact-SQL) 行ストア テーブルでは列ストア インデックスを 1 つ使用できます。A rowstore table can have one columnstore index. SQL Server 2016 (13.x)SQL Server 2016 (13.x)以降、列ストア インデックスにフィルター条件を指定できるようになりました。Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), the columnstore index can have a filtered condition. 基本構文を例示します。Examples show the basic syntax.
運用分析のパフォーマンスの高いインデックスを作成する。Create performant indexes for operational analytics. 列ストアを使用したリアルタイム運用分析の概要Get started with columnstore for real-time operational analytics 補完的な列ストア インデックスと btree インデックスを作成する方法について説明します。OLTP クエリでは btree インデックスが使用され、分析クエリでは列ストア インデックスが使用されます。Describes how to create complementary columnstore and btree indexes, so that OLTP queries use btree indexes and analytics queries use columnstore indexes.
データ ウェアハウス用のパフォーマンスの高い列ストア インデックスを作成する。Create performant columnstore indexes for data warehousing. データ ウェアハウスの列ストア インデックスColumnstore indexes for data warehousing 列ストア テーブルで btree インデックスを使用して、パフォーマンスの高いデータ ウェアハウス クエリを作成する方法について説明します。Describes how to use btree indexes on columnstore tables to create performant data warehousing queries.
btree インデックスを使用して列ストア インデックスに主キー制約を適用するUse a btree index to enforce a primary key constraint on a columnstore index. データ ウェアハウスの列ストア インデックスColumnstore indexes for data warehousing btree インデックスと列ストア インデックスを組み合わせて、列ストア インデックスに主キー制約を適用する方法を示します。Shows how to combine btree and columnstore indexes to enforce primary key constraints on the columnstore index.
列ストア インデックスを削除する。Drop a columnstore index. DROP INDEX (Transact-SQL)DROP INDEX (Transact-SQL) 列ストア インデックスを削除するには、btree インデックスが使用する標準の DROP INDEX 構文を使用します。Dropping a columnstore index uses the standard DROP INDEX syntax that btree indexes use. クラスター化列ストア インデックスを削除すると、列ストア テーブルがヒープに変換されます。Dropping a clustered columnstore index converts the columnstore table to a heap.
列ストア インデックスから行を削除する。Delete a row from a columnstore index. DELETE (Transact-SQL)DELETE (Transact-SQL) DELETE (Transact-SQL) を使用して行を削除します。Use DELETE (Transact-SQL) to delete a row.

列ストアの行: SQL ServerSQL Server は行を論理的に削除されたとしてマークしますが、インデックスが再構築されるまで行の物理ストレージを再確保することはありません。columnstore row: SQL ServerSQL Server marks the row as logically deleted, but doesn't reclaim the physical storage for the row until the index is rebuilt.

デルタストアの行: SQL ServerSQL Server は論理的および物理的に行を削除します。deltastore row: SQL ServerSQL Server logically and physically deletes the row.
列ストア インデックスの行を更新する。Update a row in the columnstore index. UPDATE (Transact-SQL)UPDATE (Transact-SQL) UPDATE (Transact-SQL) を使用して行を更新します。Use UPDATE (Transact-SQL) to update a row.

列ストアの行: SQL ServerSQL Server は行を論理的に削除されたとしてマークし、更新された行をデルタストアに挿入します。columnstore row: SQL ServerSQL Server marks the row as logically deleted and then inserts the updated row into the deltastore.

デルタストアの行: SQL ServerSQL Server は、デルタストアの行を更新します。deltastore row: SQL ServerSQL Server updates the row in the deltastore.
データを列ストア インデックスに読み込む。Load data into a columnstore index. 列ストア インデックス データの読み込みColumnstore indexes data loading
デルタストアのすべての行を強制的に列ストアに移動します。Force all rows in the deltastore to go into the columnstore. ALTER INDEX (Transact-SQL) ... REBUILDALTER INDEX (Transact-SQL) ... REBUILD

列ストア インデックスの最適化Columnstore indexes defragmentation
ALTER INDEXREBUILD オプションを指定すると、すべての行が列ストアに強制的に移動されます。ALTER INDEX with the REBUILD option forces all rows to go into the columnstore.
列ストア インデックスを最適化する。Defragment a columnstore index. ALTER INDEX (Transact-SQL)ALTER INDEX (Transact-SQL) ALTER INDEX ... REORGANIZE は、列ストア インデックスをオンラインで最適化します。ALTER INDEX ... REORGANIZE defragments columnstore indexes online.
テーブルと列ストア インデックスをマージする。Merge tables with columnstore indexes. MERGE (Transact-SQL)MERGE (Transact-SQL)

参照See also

列ストア インデックス データの読み込み Columnstore indexes data loading
列ストア インデックスのバージョン管理機能の概要 Columnstore indexes versioned feature summary
列ストア インデックスのクエリ パフォーマンス Columnstore indexes query performance
列ストアを使用したリアルタイム運用分析の概要 Get started with columnstore for real-time operational analytics
データ ウェアハウスの列ストア インデックス Columnstore indexes for data warehousing
列ストア インデックスの最適化 Columnstore indexes defragmentation
SQL Server インデックス デザイン ガイド SQL Server index design guide
列ストア インデックスのアーキテクチャColumnstore index architecture