全部產品
Search
文件中心

PolarDB:使用限制

更新時間:Jul 06, 2024

本文介紹了在SELECT語句中使用列存索引功能的限制條件。

SELECT語句限制

只支援在SELECT語句中使用列存索引。以下SELECT語句除外:

  • 含鎖操作的SELECT語句。如:SELECT ... FOR [UPDATE | SHARE] ...

  • 含frame彙總函式的SELECT語句。如:

    SELECT
        time,
        subject,
        val,
        SUM(val) OVER (
            PARTITION BY subject
            ORDER BY time
            ROWS UNBOUNDED PRECEDING  --- window function 中的 frame 定義,IMCI 不支援
        ) AS running_total
    FROM
        observations;
  • 子查詢出現在GROUP BY clause 中的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;

  • 子查詢中的關聯項出現在join condition中的SELECT語句。如:WHERE t1.a in (SELECT t2.a FROM t2 INNER JOIN t3 on t2.a = t3.a AND t2.b > t1.b);

  • 子查詢中含有window function,且關聯項在HAVING條件中的SELECT語句。

  • 子查詢中含有UNION,且關聯項出現在UNION的子查詢中的SELECT語句。

運算式限制

說明

如果SELECT語句中含有任何一個不支援使用列存索引的運算式,則整條SELECT語句都不支援列存索引功能。

比較類運算式

運算式

是否支援使用列存索引功能

SOUNDS LIKE

不支援

BETWEEN...AND...

支援

說明

a BETWEEN b AND cbc的資料類型不同時,會存在相容性問題,可能會導致查詢結果與不使用列存索引的查詢結果不一致問題。

GREATEST()

支援

說明

當入參分別包含TIME類型和字串類型時,比較結果可能會與不使用列存索引的結果存在差異。

IN()

支援

說明

IN(expr0, expr1, ...)中的expr0expr1 ... 資料類型不同時,會存在相容性問題,可能會導致查詢結果與不使用列存索引的查詢結果不一致問題。

LEAST()

支援

說明

當入參分別包含TIME類型和字串類型時,比較結果可能會與不使用列存索引的結果存在差異。

NOT BETWEEN...AND...

支援

說明

a NOT BETWEEN b AND cbc的資料類型不同時,會存在相容性問題,可能會導致查詢結果與不使用列存索引的查詢結果不一致問題。

字串類運算式

運算式

是否支援使用列存索引功能

SOUNDEX()

不支援

SOUNDS LIKE

不支援

MATCH

不支援

LOAD_FILE()

不支援

TIMESTAMP()

支援

說明

使用列存索引功能時,只支援傳入一個參數,不支援傳入兩個參數。

彙總函式類運算式

運算式

是否支援使用列存索引功能

JSON_ARRAYAGG()

不支援

JSON_OBJECTAGG()

不支援

視窗函數類運算式

運算式

是否支援使用列存索引功能

FIRST_VALUE()

不支援

NTH_VALUE()

不支援

LAST_VALUE()

不支援

加密與壓縮類運算式

運算式

是否支援使用列存索引功能

AES_DECRYPT()

不支援

AES_ENCRYPT()

不支援

COMPRESS()

不支援

RANDOM_BYTES()

不支援

STATEMENT_DIGEST()

不支援

STATEMENT_DIGEST_TEXT()

不支援

UNCOMPRESS()

不支援

UNCOMPRESSED_LENGTH()

不支援

VALIDATE_PASSWORD_STRENGTH()

不支援

JSON函數

函數

是否支援使用列存索引功能

JSON_ARRAY()

不支援

JSON_ARRAY_APPEND()

不支援

JSON_ARRAY_INSERT()

不支援

JSON_CONTAINS_PATH()

不支援

JSON_INSERT()

不支援

JSON_MERGE()

不支援

JSON_MERGE_PATCH()

不支援

JSON_MERGE_PRESERVE()

不支援

JSON_OBJECT()

不支援

JSON_OVERLAPS()

不支援

JSON_REPLACE()

不支援

JSON_SCHEMA_VALID()

不支援

JSON_SCHEMA_VALIDATION_REPORT()

不支援

JSON_SEARCH()

不支援

JSON_SET()

不支援

JSON_STORAGE_FREE()

不支援

JSON_STORAGE_SIZE()

不支援

JSON_VALUE()

不支援

MEMBER OF()

不支援

Spatial函數

函數

是否支援使用列存索引功能

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()

不支援