SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Data Warehouse の November 2015 Updates でデフォルトが列ストアインデックスになったので試してみる

leave a comment

Azure SQL Data Warehouse: November 2015 Updates で新規に作成したテーブルのデフォルトが列ストアインデックスになったことがアナウンスされたので、動作を確認してみました。

詳細については、Clustered Columnstore Tables are the New Default in Azure SQL Data Warehouse に記載されています。

CREATE TABLE Table1
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
GO

のような、テーブルを作成すると、現状は新規のテーブルについては列ストアインデックスとして作成された状態となります。

実際に確認するためには、以下のようなクエリを実行します。

# SQL Data Warehouse の DMV については、SQL Data Warehouse カタログ ビュー から確認できます。

SELECT
	name, type_desc
FROM
	sys.indexes
WHERE object_id = object_id('Table1')
GO
SELECT
	t.object_id,
	pim.object_id,
	pni.object_id,
	t.name,
	pim.physical_name,
	pni.name,
	pni.index_id,
	pni.type_desc,
	pni.pdw_node_id,
	pni.distribution_id
FROM
	sys.tables t
	LEFT JOIN
		sys.pdw_index_mappings pim
	ON
		t.object_id = pim.object_id
	LEFT JOIN
		sys.pdw_nodes_indexes pni
	ON
		pni.name = pim.physical_name
WHERE
	t.object_id  = object_id('Table1')
ORDER BY
	t.name ASC,
	pni.distribution_id ASC

「type_desc」が「CLUSTERED COLUMNSTORE」になっていることが確認できますね。

image

現状、ヒープ (クラスター化インデックスのないテーブル) を作成するためには、「HEAP」を指定して作成する必要があります。

CREATE TABLE Table1
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH(HEAP)
GO

「HEAP」を指定した場合は、「HEAP」となっていることが確認できますね。

image

アップデートが行われる前から、SQLDWH を使用している場合は、どのテーブルがどのようなインデックスを使用しているかは一度確認してみてもいいかもしれないですね。

Share

Written by Masayuki.Ozawa

12月 8th, 2015 at 12:14 am

Posted in SQL Database

Tagged with

Leave a Reply