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

PolarDB:制限

最終更新日:Nov 21, 2025

PolarDB for MySQL のインメモリ列インデックス (IMCI) 機能は、分析処理 (AP) クエリを大幅に高速化するように設計されています。この機能を使用する前に、SQL クエリが IMCI によって正しく高速化され、期待される結果が返されるように、その制限を理解する必要があります。

一般的な制限

IMCI を使用する前に、クラスター環境とテーブルスキーマが次の要件を満たしていることを確認してください。

  • ストレージエンジン: IMCI は、InnoDB ストレージエンジンを使用するテーブルに対してのみ作成できます。

  • 一時テーブル: IMCI を使用して一時テーブルのクエリを高速化することはできません。

  • 仮想カラム: 次の条件が満たされている場合、仮想カラムに IMCI を作成できます。

    • imci_enable_virtual_column クラスターパラメーターが ON に設定されている。

      説明

      このパラメーターはセッションレベルであり、コンソールでは変更できません。

    • IMCI の作成時に order_key が指定されていない。

  • 仮想カラムの型: 空間データ型の仮想カラムに IMCI を作成することはできません。

  • マルチマスタークラスター (無制限) エディション: まず、クラスターパラメーターを変更して loose_polar_enable_imci_with_mm パラメーターを ON に設定する必要があります。その後、グローバル IMCI 読み取り専用ノードを追加して IMCI 機能を使用できます。

SELECT 文の制限

IMCI は SELECT クエリの高速化にのみ使用されます。クエリ文に次のいずれかの構造が含まれている場合、クエリ全体を IMCI で高速化することはできず、実行はローストアにフォールバックします。

  • ロッキングリードを使用する SELECT 文 (例: SELECT ... FOR UPDATE または SELECT ... FOR SHARE)。

  • フレーム句を持つウィンドウ関数を含む SELECT 文。たとえば、OVER() 句で ROWS UNBOUNDED PRECEDING のような句が使用されている場合。

    SELECT
        time,
        subject,
        val,
        SUM(val) OVER (
            PARTITION BY subject
            ORDER BY time
            ROWS UNBOUNDED PRECEDING  --- ウィンドウ関数内のフレーム定義。IMCI はこれをサポートしていません。
        ) AS running_total
    FROM
        observations;
  • GROUP BY 句にサブクエリを含む SELECT 文。例: SELECT SUM(a) FROM t1 GROUP BY (SELECT ... FROM ...) as some_subquery;

  • ORDER BY 句の式にサブクエリを含む SELECT 文。例: SELECT a FROM t1 ORDER BY (SELECT ... FROM ...) as some_subquery;

  • 相関サブクエリを含む SELECT 文で、相関がサブクエリ内の JOIN 句の ON 条件の一部である場合。例: WHERE t1.a in (SELECT t2.a FROM t2 INNER JOIN t3 on t2.a = t3.a AND t2.b > t1.b);

  • ウィンドウ関数を使用し、その HAVING 句に相関列を持つサブクエリを含む SELECT 文。

  • UNION オペレーターを使用するサブクエリを含み、UNION 内の SELECT 文の 1 つが外部クエリと相関している SELECT 文。

式と関数の制限

SELECT 文にサポートされていない式や関数が含まれている場合、クエリ全体がローストアにフォールバックして実行されます。

比較式

列ストアインデックスを使用できますか?

BETWEEN ... AND ...

サポート

a BETWEEN b AND cbc のデータの型が異なる場合、互換性の問題が発生する可能性があります。これにより、クエリ結果が IMCI を使用しないクエリの結果と異なる場合があります。

NOT BETWEEN ... AND ...

サポート

a NOT BETWEEN b AND cbc のデータの型が異なる場合、互換性の問題が発生する可能性があります。これにより、クエリ結果が IMCI を使用しないクエリの結果と異なる場合があります。

GREATEST()

サポート

入力パラメーターに TIME 型と文字列型の両方が含まれている場合、比較結果が IMCI を使用しないクエリの結果と異なる場合があります。

IN()

サポート

IN(expr0, expr1, ...)expr0,expr1,... のデータの型が異なる場合、互換性の問題が発生する可能性があります。これにより、クエリ結果が IMCI を使用しないクエリの結果と異なる場合があります。

LEAST()

サポート

入力パラメーターに TIME 型と文字列型の両方が含まれている場合、比較結果が IMCI を使用しないクエリの結果と異なる場合があります。

SOUNDS LIKE

いいえ

-

文字列式

列ストアインデックスのサポート

SOUNDEX()

いいえ

-

MATCH

いいえ

-

LOAD_FILE()

いいえ

-

TIMESTAMP()

サポート

IMCI 機能を使用する場合、この関数は 1 つのパラメーターのみをサポートします。2 つのパラメーターはサポートされていません。

集計関数式

列ストアインデックスはサポートされていますか?

JSON_OBJECTAGG()

いいえ

暗号化および圧縮式

列ストアインデックスのサポート

AES_DECRYPT()

いいえ

AES_ENCRYPT()

いいえ

COMPRESS()

いいえ

RANDOM_BYTES()

いいえ

STATEMENT_DIGEST()

いいえ

STATEMENT_DIGEST_TEXT()

いいえ

UNCOMPRESS()

いいえ

UNCOMPRESSED_LENGTH()

いいえ

VALIDATE_PASSWORD_STRENGTH()

いいえ

JSON 関数

関数

列ストアインデックスはサポートされていますか?

JSON_ARRAY_APPEND()

いいえ

JSON_ARRAY_INSERT()

いいえ

JSON_CONTAINS_PATH()

いいえ

JSON_INSERT()

いいえ

JSON_MERGE()

いいえ

JSON_MERGE_PATCH()

いいえ

JSON_MERGE_PRESERVE()

いいえ

JSON_REPLACE()

いいえ

JSON_SCHEMA_VALID()

いいえ

JSON_SCHEMA_VALIDATION_REPORT()

いいえ

JSON_SEARCH()

いいえ

JSON_SET()

いいえ

JSON_STORAGE_FREE()

いいえ

JSON_STORAGE_SIZE()

いいえ

JSON_VALUE()

いいえ

MEMBER OF()

いいえ

空間関数

関数

列ストアインデックスはサポートされていますか?

ST_AsGeoJSON()

いいえ

ST_Buffer()

いいえ

ST_Buffer_Strategy()

いいえ

ST_Centroid()

いいえ

ST_Collect()

いいえ

ST_ConvexHull()

いいえ

ST_EndPoint()

いいえ

ST_ExteriorRing()

いいえ

ST_FrechetDistance()

いいえ

ST_GeoHash()

いいえ

ST_GeometryN()

いいえ

ST_GeometryType()

いいえ

ST_GeomFromGeoJSON()

いいえ

ST_HausdorffDistance()

いいえ

ST_InteriorRingN()

いいえ

ST_Intersection()

いいえ

ST_IsClosed()

いいえ

ST_IsEmpty()

いいえ

ST_IsSimple()

いいえ

ST_IsValid()

いいえ

ST_LatFromGeoHash()

いいえ

ST_LineInterpolatePoint()

いいえ

ST_LineInterpolatePoints()

いいえ

ST_LongFromGeoHash()

いいえ

ST_NumGeometries()

いいえ

ST_NumInteriorRing()

いいえ

ST_NumInteriorRings()

いいえ

ST_NumPoints()

いいえ

ST_PointAtDistance()

いいえ

ST_PointFromGeoHash()

いいえ

ST_PointN()

いいえ

ST_StartPoint()

いいえ

ST_SwapXY()

いいえ