マイクロソフトが「Azure SQL Data Warehouse」の機能を拡充。列ストアテーブルのセカンダリーBツリーインデックスをサポートした。
米マイクロソフトは2016年12月5日(米国時間)、「Azure SQL Data Warehouse」が列ストアテーブル(クラスタ化列ストアインデックス:CCI)のセカンダリーBツリーインデックス(非クラスタ化インデックス:NCI)をサポートしたと発表した。
ほとんどの分析クエリは、大量のデータを集めて、列ストアセグメントを直接スキャンすることで大抵はうまく処理される。しかし、“干し草の山から針を探す”ようなクエリ、つまり1つの行や少数の行を検索するクエリが行われることもデータ分析の現場ではよくある。こうした検索クエリではフィルター列にBツリーインデックスがあると、応答時間が数十〜数百倍(さらには1000倍)改善されるという。
Azure SQL Data Warehouseでは、これまで列ストアテーブルのセカンダリーBツリーインデックスを利用できず、ユーザーはクラスタ化Bツリーインデックスの列ストアデータを複製することで、検索クエリの応答時間を短縮する工夫をしていた。しかし、データを複製すると実装が複雑になるだけでなく、ストレージコストやレイテンシが増加する課題も残る。列ストアで新しいセカンダリーインデックスを利用できるようにすることで、データを複製することなく、複製時と同じ応答時間でクエリ結果を取得できるようになるという。
下図では、一般的なTransact-SQLのCREATE INDEX文と同じ構文に従ってインデックスを作成している。セカンダリーインデックスを追加して1TBのTPC-Hデータに対して簡単なテストを行ったところ、これまで41秒かかっていたクエリ時間が、1秒未満に短縮された。
利用ガイドラインは以下の通り。
Copyright © ITmedia, Inc. All Rights Reserved.