すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for SelectDB:インデックスの概要

最終更新日:Jul 09, 2026

このトピックでは、 ApsaraDB for SelectDB の組み込みインテリジェントインデックスとその使用方法について説明します。

背景情報

インデックスは、データの高速なフィルタリングやクエリに使用されます。ApsaraDB for SelectDB は、次のタイプのインデックスをサポートしています。

ゾーンマップインデックス

ゾーンマップ インデックスは、列指向ストレージ形式の各列で自動的に維持されるインデックス情報であり、最小値、最大値、および NULL 値の数を含みます。ゾーンマップ インデックスは、 automatically created and maintained by ApsaraDB for SelectDBによって自動的に作成および維持されます。

プレフィックスインデックス

ApsaraDB for SelectDB は、従来のデータベースとは異なります。ApsaraDB for SelectDB は、超並列処理 (MPP) アーキテクチャを使用して同時実行性を高めることで大量のデータを処理する、オンライン分析処理 (OLAP) データベースです。ApsaraDB for SelectDB は、インデックススキーマと連携してクエリを高速化できます。

ApsaraDB for SelectDB のデータは、ソート済み文字列テーブル (SSTable) に類似したデータ構造に格納されます。このデータ構造は順序付けられており、指定された列に基づいてデータを並べ替えて格納できます。このデータ構造では、ソート列に基づいてデータを効率的にクエリできます。

集約キーモデル、ユニークキーモデル、複製キーモデルでは、基盤となるデータストレージは、テーブルの作成に使用される AGGREGATE KEY、UNIQUE KEY、DUPLICATE KEY ステートメントで指定された列に基づいてデータをソートおよび格納します。プレフィックスインデックスは、データがソートされた後、指定されたプレフィックス列に基づいてデータを高速にクエリするために使用されます。

次の例では、データ行の最初の 36 バイトをデータ行のプレフィックスインデックスとして使用します。VARCHAR 型のデータは、プレフィックスインデックスに含まれる際に切り捨てられることがあります。例:

  1. 次のスキーマのプレフィックスインデックスは user_id(8 Bytes) + age(4 Bytes) + message(prefix 24 Bytes) です。

    列名

    user_id

    BIGINT

    age

    INT

    message

    VARCHAR(100)

    max_dwell_time

    DATETIME

    min_dwell_time

    DATETIME

    クエリ条件がプレフィックスインデックスのキープレフィックスと一致する場合、クエリを高速化できます。次のクエリステートメントを実行します:

    例 1:

    SELECT * FROM table WHERE user_id=1829239 and age=20;

    例 2:

    SELECT * FROM table WHERE age=20;

    例 1 のクエリ速度は、例 2 よりもはるかに高速です。テーブルを作成する際に、列を適切な順序で指定することで、クエリ効率を向上させることができます。

  2. 次のスキーマのプレフィックスインデックスは user_name(20 Bytes) です。この場合、先頭列 user_name の型は VARCHAR(20) であり、プレフィックスインデックスの最大長 (36 バイト) よりも短いため、インデックスの長さは列の最大長である 20 バイトになります。

    列名

    user_name

    VARCHAR(20)

    age

    INT

    message

    VARCHAR(100)

    max_dwell_time

    DATETIME

    min_dwell_time

    DATETIME

マテリアライズドビューを使用したプレフィックスインデックスの変更

テーブルの列は、テーブルの作成時に指定された順序でソートされています。したがって、テーブルにはプレフィックスインデックスが 1 つだけあります。プレフィックスインデックスにヒットしない列に基づいてデータをクエリする場合、クエリ効率がビジネス要件を満たさない可能性があります。マテリアライズドビューを作成して列の順序を変更できます。詳細については、「同期マテリアライズドビュー」をご参照ください。