建立ORALCE空间索引相关

在建立空间索引前必须先在USER_SDO_GEOM_METADATA中注册空间表。注册空间表语句如下所示:

INSERT INTO user_sdo_geom_metadata
(table_name, column_name, srid, diminfo)
VALUES
(
'CUSTOMERS', -- 表名
'LOCATION', -- geometry字段

8307, -- SRID

SDO_DIM_ARRAY -- DIMINFO 属性存储空间表中空间数据的范围和容差
(
SDO_DIM_ELEMENT
(
'X', -- 第一个元键名称
-180, -- 最小X
180, -- 最大X
0.5 -- 容差0.5 米),
SDO_DIM_ELEMENT
(
'Y', -- 第二个元键名称
-90, -- 最小Y

90, -- 最大Y
0.5 -- 容差0.5米)
)
);

在建立空间索引前必须注意,空间表中的SRID必须与USER_SDO_GEOM_METADATA中注册的SRID一致,因为在建立空间索引的时候,oracle会自动检查空间表中的SRID是否与USER_SDO_GEOM_METADATA中

的SRID一致,如果不一致,则会报ORA-13365 ERROR,但ORACLE不会取消的空间索引的建立,因

此需要手动删除已建立的索引,解决冲突后重新建立索引。

 空间索引创建定义:
CREATE INDEX <indexname> on <tablename>(<columnname>)
indextype is mdsys.spatial_index
parameters('parameter_string')

可以不设置parameters,但对parameters的设置在一定程度上可以提高空间操作的数据。parameters字符串设置详情如下所示:

 

TABLESPACE

定义空间索引存储的表空间,NEXT和INITIAL是扩展TABLESPACE的变量。

例:PARAMETERS ('TABLESPACE=TBS_3 NEXT=5K INITIAL=10K')

 

WORK_TABLESPACE

定义空间索引在建立过程中使用的工作表的存储空间。在创建索引的R-tree索引进行排序操作将对整个记录集进行排序,因此,在创建索引的过程中会创建许多工作表,在索引创建完成后这些工作表会被删除,这个过程会在表空间里产生许多碎片。因为这些表并非临时表,因此不能使用oracle的临时表空间,它默认使用使用跟索引同样的表空间 为防止这种情况的发生,你可以为这些在建立索引时创建的临时工作表另外设置一个表空间。

例: PARAMETERS ('WORK_TABLESPACE=SYSAUX')


LAYER_GTYPE

定义创建索引的字段存储的集合类型,它有助于完善数据检查,同时在一定程度上提高空间查询的速度。例如,索引参数中设置LAYER_GTYPE=POINT,则表示geometry字段中只能存储point类型的数据,如果试图存入line类型的几何数据则会报错。

POINT——点

LINE——线

POLYGON——多边形

CURVE——曲线

MULTIPOINT——点集

MULTICURVE——多曲线

MULTIPOLYGON——多边形集

COLLECTION——复合
例:PARAMETERS ('LAYER_GTYPE=POINT');

 
SDO_INDX_DIMS

定义空间索引的维度,默认为二维。R-TREE可建立三维或四维空间数据的空间索引,
SQL> CREATE INDEX customers_sidx ON customers(location)
INDEXTYPE IS MDSYS.SPATIAL_INDEX
例:PARAMETERS ('SDO_INDX_DIMS=2');

 

SDO_DML_BATCH_SIZE

进行添加删除修改等操作时,包含空间索引的表并非直接删除表中数据,而是在SDO_DML_BATCH_SIZE指定的缓冲大小分批处理,此删除指定了添加删除修改等事务操作的缓冲大小,默认为1000;如果添加删除修改等事务操作的数据量很大的情况下,可以将SDO_DML_BATCH_SIZE设为5000或10000或其他,但注意SDO_DML_BATCH_SIZE设置大后对内存和其他系统资源的占用量也会增大。因此要视实际情况而定。 

例: PARAMETERS ('SDO_DML_BATCH_SIZE=5000');


SDO_LEVEL
oracle默认索引为R-TREE索引,通过在索引参数中定义SDO_LEVEL可以创建四叉树索引,oracle

的四叉树索引目前只支持二维空间数据。
例:PARAMETERS ('SDO_LEVEL=8');

 

 本人对此了解还很肤浅,如有不足的地方敬请指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值