Oracle 空间查询太慢

问题描述 投票:0回答:0

我有桌子

CREATE TABLE BulkContainers (objectId NUMBER PRIMARY KEY NOT NULL, geometryType VARCHAR2(10) NOT NULL, geodata SDO_GEOMETRY NOT NULL, timeFrom TIMESTAMP, timeTo TIMESTAMP, cityDistrict VARCHAR2(25), street VARCHAR2(70), trashTypeName VARCHAR2(20), payer VARCHAR2(40), day DATE);

表包含 67k 条记录,其中地理数据只是点。插入看起来像:

INSERT INTO BulkContainers VALUES (1, 'Point', SDO_GEOMETRY(2001, 4326, SDO_POINT_TYPE(14.410944786000073, 50.00247538700006, NULL), NULL, NULL), TO_DATE('15:00:00', 'hh24:mi:ss'), TO_DATE('19:00:00', 'hh24:mi:ss'), 'Praha 12', 'K Dolům x Na Havránce', NULL, 'Magistrát hlavního města Prahy', TO_DATE('2017-06-27', 'yyyy-mm-dd'));

然后我创建空间索引:

CREATE INDEX BulkContainersIndex ON BulkContainers(geodata) INDEXTYPE IS MDSYS.SPATIAL_INDEX;

当我查询时

SELECT * FROM BulkContainers WHERE SDO_Contains(SDO_GEOMETRY(2003, 4326, NULL, SDO_ELEM_INFO_ARRAY(1,1003,1), SDO_ORDINATE_ARRAY(14.4581317969398, 50.1183615071601,14.458206937375722, 50.111298642412365,14.45958938042816, 50.11338285609135,14.459670486629884, 50.11680358343008,14.459711073905314, 50.11919053237874,14.4581317969398, 50.1183615071601)), geodata) = 'TRUE'

查询很慢,需要10秒左右。有什么建议为什么要花这么多时间吗? Ii 另一个系统,我通过删除 = 'TRUE' 语句来改进这个,有没有办法在 Oracle 系统中做到这一点?

oracle spatial contains
© www.soinside.com 2019 - 2024. All rights reserved.