oracle spatial 数据导入_oracle spatial之基础知识之四空间索引

空间索引

1建立索引之前为空间层插入元数据

SQL> desc user_sdo_geom_metadata;

名称是否为空?类型

-----------------------------------------

-------- ----------------------------

TABLE_NAMENOT NULL VARCHAR2(32)

COLUMN_NAMENOT NULL

VARCHAR2(1024)

DIMINFOMDSYS.SDO_DIM_ARRAY

SRIDNUMBER

SQL> select *

from user_sdo_geom_metadata;

TABLE_NAMECOLUMN_NAMEDIMINFOSRID

---------- ------------------------------------ ----------

CUSTOMERSLOCATION8307

GC_ROAD_SEGMENT_USGEOMETRY8307

US_RESTAURANTSLOCATION8307

US_INTERSTATESGEOM8307

为对应于customer表的LOCATION列的空间层插入元数据

user_sdo_geom_metadata是个视图

INSERT

INTO user_sdo_geom_metadata

(table_name,

column_name, srid, diminfo)

VALUES

(

'CUSTOMERS', -- TABLE_NAME

'LOCATION', -- COLUMN_NAME

8307, -- SRID specifying a geodetic

coordinate system

SDO_DIM_ARRAY -- DIMINFO attribute for

storing dimension bounds, tolerance

(

SDO_DIM_ELEMENT

(

'LONGITUDE', -- DIMENSION NAME for first

dimension

-180, -- SDO_LB for the dimension: -180

degrees

180, -- SDO_UB for the dimension: 180

degrees

0.5 -- Tolerance of 0.5 meters (not 0.5

degrees: geodetic SRID)

),

SDO_DIM_ELEMENT

(

'LATITUDE', -- DIMENSION NAME for second

dimension

-90, -- SDO_LB for the dimension: -90

degrees

90, -- SDO_UB for the dimension: 90 degrees

0.5 -- Tolerance of 0.5 meters (not 0.5

degrees: geodetic SRID)

)

)

);

DIMINFO域为每个维定义了边界和容差(TOLERANE).它的值被设置为一个含有两个元素的SDO_DIM_ARRAY对象.

2创建空间索引

首先删除索引:

DROP

INDEX CUSTOMERS_SIDX;

其次创建索引:

CREATE

INDEX CUSTOMERS_SIDX ON CUSTOMERS(LOCATION) INDEXTYPE IS MDSYS.SPATIAL_INDEX;

3空间索引的参数信息

创建空间索引的语法:

CREATE INDEX ON()

INDEXTYPE IS MDSYS.SPATIAL_INDEX

PARAMETERS ('parameter_string');

lTABLSPACE参数

通过这个参数,可以指定用哪个表空间来存储空间索引表。EG:tablesspace= TBS_3会将空间索引表存储在空间表空间TBS_3中CREATE INDEX customers_sidx ON customers(location)

INDEXTYPE IS MDSYS.SPATIAL_INDEX

PARAMETERS ('TABLESPACE=TBS_3');

lWORK_TABLSPACE参数

创建和删除大量不同大小的表会使表空间产生很多的空间碎片。为了避免这种情况,可以使用WORK_TABLSPACE参数来为这些工作表指定一个单独的表空间

CREATE

INDEX customers_sidx ON customers(location)

INDEXTYPE

IS MDSYS.SPATIAL_INDEX

PARAMETERS

('WORK_TABLESPACE= TBS_4');

lSDO_DML_BATCH_SIZE参数

在含有空间索引的表的插入和删除操作并未直接纳入该空间索引。相反,他们是在事务提交时被批量的纳入该索引中。这个参数用于指定一个事务中批量插入删除更新时的批量大小(对有大量插入的事务,该参数应该设置为50000或是10000)。

CREATE INDEX customers_sidx ON

customers(location)

INDEXTYPE IS MDSYS.SPATIAL_INDEX

PARAMETERS

('SDO_DML_BATCH_SIZE=5000');

4 USER_SDO_INDEX_METADATA视图

SQL> desc user_sdo_index_metadata;

名称是否为空?类型

-----------------------------------------

-------- -------------------

SDO_INDEX_OWNERVARCHAR2(32)

SDO_INDEX_TYPEVARCHAR2(32)

SDO_LEVELNUMBER

SDO_NUMTILESNUMBER

SDO_MAXLEVELNUMBER

SDO_COMMIT_INTERVALNUMBER

SDO_INDEX_TABLEVARCHAR2(32)

SDO_INDEX_NAMEVARCHAR2(32)

SDO_INDEX_PRIMARYNUMBER

SDO_TSNAMEVARCHAR2(32)

SDO_COLUMN_NAMEVARCHAR2(2048)

SDO_RTREE_HEIGHTNUMBER

SDO_RTREE_NUM_NODESNUMBER

SDO_RTREE_DIMENSIONALITYNUMBER

SDO_RTREE_FANOUTNUMBER

SDO_RTREE_ROOTVARCHAR2(32)

SDO_RTREE_SEQ_NAMEVARCHAR2(32)

SDO_FIXED_METARAW(255)

SDO_TABLESPACEVARCHAR2(32)

SDO_INITIAL_EXTENTVARCHAR2(32)

SDO_NEXT_EXTENTVARCHAR2(32)

SDO_PCTINCREASENUMBER

SDO_MIN_EXTENTSNUMBER

SDO_MAX_EXTENTSNUMBER

SDO_INDEX_DIMSNUMBER

SDO_LAYE

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值