前提
- Datastoreのインデックスはは2種に分類されるが、ここでは組み込みインデックスについてのみ取り上げる。
- サンプルコードはGoを利用する。
インデックスの付与・除外
デフォルトではプロパティに自動的に付与される。タグを付与することで除外できる。除外しても既存プロパティのインデックスが削除されるわけではない。
type Task struct {
Category string
Done bool
Priority int
Description string `datastore:",noindex"`
PercentComplete float64
Created time.Time
}
task := &Task{
Category: "Personal",
Done: false,
Priority: 4,
Description: "Learn Cloud Datastore",
PercentComplete: 10.0,
Created: time.Now(),
}
組み込みインデックス対象かを確認する
いずれもGCPコンソールから確認することができる。
- GCPコンソール > データストア > エンティティ > GQL
- GCPコンソール > データストア > ダッシュボード
GQL
組み込みインデックスから除外されている場合は、結果は返却されない。
SELECT * FROM `kind` WHERE <property_name> = "<value>"
統計情報
更新時間は約24~48時間とされているため即時確認はできないので注意が必要。(参考:Consoleで統計情報を表示する)
組み込みインデックスのデータサイズ
インデックス エントリのサイズにある通り、エンティティのデータサイズの2倍のサイズが割り当てられる。
所感・課題
結果として公式リファレンスにある通りだが、複合インデックスの解説は多く取り上げられていた分、組み込みインデックスの解説が探しづらかったので整理した。インデックス付与対象のプロパティから除外する場合、過去の不要なインデックスは削除したくなるが、方法が見当たらなかった。