セカンダリインデックス機能を使用すると、データテーブルのプライマリキーと、そのテーブルに作成されたセカンダリインデックスのインデックス列に基づいてデータをクエリできます。これにより、データクエリが高速化されます。セカンダリインデックスを作成する際に、そのセカンダリインデックスのインデックス列または属性列を、インデックスを作成するテーブルに指定した事前定義列に設定できます。セカンダリインデックスを作成した後、それを使用してデータをクエリできます。
前提条件
パラメーター [最大バージョン数] が 1 に設定されたデータテーブルが作成されていること。データテーブルの Time to Live (TTL) パラメーターは、次のいずれかの条件を満たしている必要があります。
-
データテーブルの TTL パラメーターが -1 に設定されています。つまり、データテーブル内のデータは期限切れになりません。
-
データテーブルの Time to Live (TTL) が -1 でない場合、テーブルは更新を許可しません。これは、[更新を許可] オプションが いいえ に設定されていることを意味します。
セカンダリインデックスの TTL は、データテーブルの TTL と同じです。
ステップ1: (任意) 事前定義列の追加
テーブルに対してセカンダリインデックスを作成する際に、そのテーブルに事前定義列が含まれていない、または既存の事前定義列がビジネス要件を満たさない場合は、テーブルに事前定義列を追加または削除できます。
データテーブルを作成する際に、事前定義列を追加することもできます。詳細については、「ステップ3: データテーブルの作成」をご参照ください。
-
テーブル管理 ページに移動します。
-
Tablestore コンソールにログインします。
-
概要 ページで、インスタンス名をクリックします。
-
インスタンスの詳細 タブの テーブルリスト セクションで、データテーブル名をクリックします。
-
-
基本情報 タブの 定義済列 モジュールの 詳細機能 セクションで、定義済みの列を追加する をクリックします。
-
定義済みの列を追加する ダイアログボックスで、定義済みの列を追加する をクリックし、事前定義列の名前を入力してデータ型を選択します。
-
事前定義列の命名規則: 名前は 1~255 バイトの長さで、文字、数字、アンダースコア (_) を含めることができます。名前は文字またはアンダースコア (_) で始まる必要があります。
-
データ型として String、Integer、バイナリ、浮動小数点数、または ブーリアン を選択できます。事前定義列をインデックス列として使用する場合は、String、Integer、または バイナリ を選択します。
説明定義済みの列を追加する をクリックして、複数の列を追加できます。不要な列を削除するには、その横にある
アイコンをクリックします。
-
-
OK をクリックします。
追加した事前定義列が、事前定義列のリストに表示されます。
事前定義列のリストから列を削除したい場合は、[事前定義列の削除] 列の
アイコンをクリックします。
ステップ2: セカンダリインデックスの作成
セカンダリインデックスを作成し、それを使用してデータクエリを高速化できます。セカンダリインデックスは、グローバルセカンダリインデックスとローカルセカンダリインデックスで構成されます。ビジネス要件に基づいてセカンダリインデックスを作成できます。
データテーブルを作成する際に、セカンダリインデックスを作成することもできます。詳細については、「ステップ3: データテーブルの作成」をご参照ください。
-
テーブル管理 ページに移動します。
-
Tablestore コンソールにログインします。
-
概要 ページで、インスタンス名をクリックします。
-
インスタンスの詳細 タブの テーブルリスト セクションで、データテーブル名をクリックします。
-
-
インデックス タブで、セカンダリインデックスの作成 をクリックします。
-
インデックスの作成 ダイアログボックスで、セカンダリインデックスを設定します。

-
次の表にパラメーターを説明します。
パラメーター
説明
インデックスタイプ
インデックスの種類。この値は常に セカンダリインデックス です。
インスタンス名
インスタンスの名前。このパラメーターの値は変更できません。
テーブル名
セカンダリインデックスを作成するデータテーブルの名前。このパラメーターの値は変更できません。
インデックス名
作成するセカンダリインデックスの名前。
重要名前は、既存のデータテーブルや時系列テーブルの名前と同じにすることはできません。
インデックス種別
セカンダリインデックスのタイプ。有効な値:
-
グローバルセカンダリインデックス: Tablestore は、データテーブルのインデックス列とプライマリキー列から、作成するインデックステーブルの列に非同期モードでデータを自動的に同期します。
インデックステーブルの最初のプライマリキー列は、データテーブルのプライマリキー列または事前定義列にすることができます。
-
ローカルセカンダリインデックス: Tablestore は、データテーブルのインデックス列とプライマリキー列から、作成するインデックステーブルの列に同期モードでデータを自動的に同期します。データがデータテーブルに書き込まれた後、すぐにインデックステーブルでデータをクエリできます。
インデックステーブルの最初のプライマリキー列は、データテーブルの最初のプライマリキー列でなければなりません。
既存データ
データテーブルの既存データをセカンダリインデックスに含めるかどうかを指定します。有効な値:
-
既存データを含める
-
既存データを除外する
-
-
プライマリキー列を希望の順序で選択し、各列に対して プライマリキー列の追加 をクリックします。
String、Integer、バイナリ のデータ型の事前定義列のみがプライマリキー列として使用できます。
-
属性列として使用する事前定義列を選択し、預定義列の追加 をクリックします。
-
-
OK をクリックします。
作成したセカンダリインデックスがインデックスのリストに表示されます。
ステップ3: データのクエリ
インデックステーブルに対して単一行クエリまたは範囲クエリを使用して、必要なデータを検索できます。
範囲クエリの実行
-
テーブル管理 ページに移動します。
-
Tablestore コンソールにログインします。
-
概要 ページで、インスタンス名をクリックします。
-
インスタンスの詳細 タブの テーブルリスト セクションで、データテーブル名をクリックします。
-
-
インデックス タブで、対象のインデックステーブルを見つけ、アクション 列の クエリ をクリックします。
-
検索 ダイアログボックスで、クエリ条件を設定します。

-
モード を 範囲検索 に設定します。
-
デフォルトでは、すべての列が返されます。特定の属性列を返すには、[すべての列を取得] をオフにし、列名をコンマ (,) で区切って入力します。
-
[開始プライマリキー列] と [終了プライマリキー列] パラメーターを設定します。
重要-
[モード] パラメーターを [範囲検索] に設定した場合、最も左の各プライマリキー列内で開始値と終了値が同じである場合にのみ、右側のプライマリキー列で指定された開始値と終了値の範囲が有効になります。最も左のプライマリキー列で開始値と終了値が異なる場合、右側のプライマリキー列で指定された開始値と終了値の範囲は有効になりません。
-
範囲クエリでサポートされる範囲は、左開右閉区間です。
-
-
[最大バージョン数] パラメーターのデフォルト値を保持します。
-
クエリ結果のソート方向を 前方検索 または 後方検索 に設定します。
-
-
OK をクリックします。
クエリ条件に一致するデータがデータリストに表示されます。
単一行クエリの実行
-
テーブル管理 ページに移動します。
-
Tablestore コンソールにログインします。
-
概要 ページで、インスタンス名をクリックします。
-
インスタンスの詳細 タブの テーブルリスト セクションで、データテーブル名をクリックします。
-
-
インデックス タブで、対象のインデックステーブルを見つけ、アクション 列の クエリ をクリックします。
-
検索 ダイアログボックスで、クエリ条件を設定します。

-
モード を 行検索 に設定します。
-
デフォルトでは、すべての列が返されます。特定の属性列を返すには、[すべての列を取得] をオフにし、列名をコンマ (,) で区切って入力します。
-
対象の行の プライマリキー値 を入力します。
プライマリキー値の完全性と正確性がクエリ結果に影響します。
-
[最大バージョン数] パラメーターのデフォルト値を保持します。
-
-
OK をクリックします。
クエリしたい行がインデックステーブルに含まれている場合、Tablestore はその行のデータを返します。クエリしたい行がインデックステーブルに含まれていない場合、データは返されません。
よくある質問
関連ドキュメント
-
Tablestore SDK または Tablestore CLI を使用してセカンダリインデックスを利用できます。詳細については、「Tablestore SDK を使用したグローバルセカンダリインデックスの使用」および「セカンダリインデックス」をご参照ください。
-
より効率的かつ柔軟な方法でデータをクエリしたい場合は、検索インデックス機能を使用できます。この機能は、ブールクエリ、全文検索、プレフィックスクエリ、あいまいクエリなど、複数のクエリ方法を提供します。詳細については、「概要」をご参照ください。