STV_Refresh_Index
将新添加或更新的多边形追加到现有的空间索引,以及从现有的空间索引中移除已删除的多边形。
OVER() 子句必须为空。
行为类型
可变
语法
STV_Refresh_Index( gid, g
USING PARAMETERS index='index_name'
[, skip_nonindexable_polygons={ true | false } ] )
OVER()
[ AS (type, polygons, srid, min_x, min_y, max_x, max_y, info,
indexed, appended, updated, deleted) ]
参数
gid
- 唯一标识多边形的 Integer 列的名称。Gid 不能为 NULL。
g
- 包含多边形或多边形集合的几何或地理 (WGS84) 列或表达式的名称。只能对多边形和多边形集合编制索引。将从索引中排除其他图形类型。
参数
index = 'index_name'
- 索引的名称,类型为 VARCHAR。索引名称不能超过 110 个字符。索引名称中不允许使用斜杠、反斜杠和制表符。
skip_nonindexable_polygons = { true | false }
(可选)BOOLEAN
在极少的情况下,无法对复杂多边形(例如解析度过高或包含不规则尖峰)编制索引。这些多边形被视为不可编制索引。当设置为 False 时,不可编制索引的多边形会导致创建索引失败。当设置为 True 时,可通过从索引中排除不可编制索引的多边形成功创建索引。
要审查无法编制索引的多边形,请配合参数 list_polygon 使用 STV_Describe_Index。
默认值:False
返回
type
- 索引的空间对象类型。
polygons
- 已编制索引的多边形数量。
SRID
- 空间参照系标识符。
min_x, min_y, max_x, max_y
- 已编制索引的几何图形的最小边界矩形 (MBR) 的坐标。(
min_x
,min_y
) 是西南坐标,(max_x
,max_y
) 是东北坐标。 info
- 列出从索引中排除的空间对象数量及其类型。
indexed
- 在操作期间编制索引的多边形数量。
appended
- 追加的多边形数量。
updated
- 更新的多边形数量。
deleted
- 删除的多边形数量。
支持的数据类型
特权
任何有权访问 STV_*_Index 函数的用户都可以描述、重命名或删除由其他任何用户创建的索引。
限制
-
在极少的情况下,无法对复杂多边形(例如解析度过高或包含不规则尖峰)编制索引。请参见参数
skip_nonindexable_polygons
。 -
如果将源表中的有效多边形替换为无效的多边形,STV_Refresh_Index 将会忽略无效的多边形。因此,原来已编制索引的多边形仍保留在索引中。
-
无法索引以下几何图形:
-
非多边形
-
NULL gid
-
NULL 多边形(集合)
-
EMPTY 多边形(集合)
-
无效多边形(集合)
-
-
以下地形不包含在索引中:
- 带孔的多边形
- 跨越国际日期变更线的多边形
- 覆盖北极或南极的多边形
- 对跖多边形
使用提示
-
要取消运行 STV_Refresh_Index,请使用 Ctrl + C。
-
如果使用之前没有与索引关联的源数据,则会覆盖索引。
-
如果 STV_Refresh_Index 没有足够的内存处理该查询,则将使用 STV_Create_Index 重建索引。
-
如果 Geometry 列没有有效的多边形,STV_Refresh_Index 将在 vertica.log 中报告错误并停止刷新索引。
-
确保您计划索引的所有多边形都是有效的多边形。STV_Create_Index 和 STV_Refresh_Index 在构建索引时不检查多边形的有效性。
有关详细信息,请参阅创建或刷新索引之前确保多边形的有效性。
示例
以下示例显示了 STV_Refresh_Index 的用法。
使用单个字面参数刷新索引:
=> SELECT STV_Create_Index(1, ST_GeomFromText('POLYGON((0 0,0 15.2,3.9 15.2,3.9 0,0 0))')
USING PARAMETERS index='my_polygon') OVER();
type | polygons | SRID | min_x | min_y | max_x | max_y | info
----------+----------+------+-------+-------+-------+-------+------
GEOMETRY | 1 | 0 | 0 | 0 | 3.9 | 15.2 |
(1 row)
=> SELECT STV_Refresh_Index(2, ST_GeomFromText('POLYGON((0 0,0 13.2,3.9 18.2,3.9 0,0 0))')
USING PARAMETERS index='my_polygon') OVER();
type | polygons | SRID | min_x | min_y | max_x | max_y | info | indexed | appended | updated | deleted
----------+----------+------+-------+-------+-------+-------+------+---------+----------+---------+---------
GEOMETRY | 1 | 0 | 0 | 0 | 3.9 | 18.2 | | 1 | 1 | 0 | 1
(1 row)
刷新表索引:
=> CREATE TABLE pols (gid INT, geom GEOMETRY);
CREATE TABLE
=> COPY pols(gid, gx filler LONG VARCHAR, geom AS ST_GeomFromText(gx)) FROM stdin delimiter '|';
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> 1|POLYGON((-31 74,8 70,8 50,-36 53,-31 74))
>> 2|POLYGON((5 20,9 30,20 45,36 35,5 20))
>> 3|POLYGON((12 23,9 30,20 45,36 35,37 67,45 80,50 20,12 23))
>> \\.
=> SELECT STV_Create_Index(gid, geom USING PARAMETERS index='my_polygons_1', overwrite=true)
OVER() FROM pols;
type | polygons | SRID | min_x | min_y | max_x | max_y | info
----------+----------+------+-------+-------+-------+-------+------
GEOMETRY | 3 | 0 | -36 | 20 | 50 | 80 |
(1 row)
=> COPY pols(gid, gx filler LONG VARCHAR, geom AS ST_GeomFromText(gx)) FROM stdin delimiter '|';
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> 6|POLYGON((-32 74,8 70,8 50,-36 53,-32 74))
>> \\.
=> SELECT STV_Refresh_Index(gid, geom USING PARAMETERS index='my_polygons_1') OVER() FROM pols;
type | polygons | SRID | min_x | min_y | max_x | max_y | info | indexed | appended | updated | deleted
----------+----------+------+-------+-------+-------+-------+------+---------+----------+---------+---------
GEOMETRY | 4 | 0 | -36 | 20 | 50 | 80 | | 1 | 1 | 0 | 0
(1 row)