全部產品
Search
文件中心

PolarDB:多外包框空間索引

更新時間:Feb 14, 2025

GanosBase在提供預設空間索引的基礎上,實現了多外包框(Multi-Bounding-Box)空間索引,用於對幾何線物件查詢的加速。

文法

CREATE INDEX index_name ON table_name USING GIST(geom_column_name operator_class);

參數

參數名稱

描述

geom_column_name

建立多外包框空間索引目標列名。

operator_class

在建立多外包框空間索引時,必須明確指定操作符類。取值範圍如下:

  • gist_geometry_ops(預設):對應Geometry類型,用於構建2D空間索引。

  • gist_geometry_ops_2dx:對應Geometry類型,用於構建2D多外包框空間索引。

  • gist_geography_ops(預設):對應Geography類型,用於構建3D空間索引。

  • gist_geography_ops_2dx:對應Geography類型,用於構建2D多外包框空間索引。

描述

  • 對於點數較多、空間跨度較大的LineString和MultiLineString對象,在構建索引時,會將目標對象進行拆分,構建多外包空間索引。

  • 索引拆分模式由參數ganos.geometry.mbbox_split_mode指定,取值包括lengthpoints,分別對應按對象長度拆分和按點個數拆分,預設為length,具體規則如下:

  • 查詢時完全透明,無需更改SQL語句。

樣本

  • Geometry類型

    CREATE TABLE line_test(id int, geom geometry);
    INSERT INTO line_test VALUES(1, st_geomfromtext('Linestring(0 1, 0 0, 1 0, 2 1,2 2,3 3)'));
    
    --- 建立2D空間索引
    CREATE INDEX line_test_gist_geom_2d ON line_test USING GIST(geom);
    
    --- 建立2D多外包框空間索引
    CREATE INDEX line_test_gist_geom_2dx ON line_test USING GIST(geom gist_geometry_ops_2dx);
  • Geography類型

    CREATE TABLE line_test(id int, geog geography);
    INSERT INTO line_test VALUES(1, st_geogfromtext('Linestring(0 1, 0 0, 1 0, 2 1,2 2,3 3)'));
    
    --- 建立3D空間索引
    CREATE INDEX line_test_gist_geog_3d ON line_test USING GIST(geog);
    
    --- 建立2D多外包框空間索引
    CREATE INDEX line_test_gist_geog_2dx ON line_test USING GIST(geog gist_geography_ops_2dx);