Oracle中的非空间索引

时间:2014-03-06 06:55:10

标签: database oracle indexing spatial

我正在尝试在两列上创建非空间索引,其中一列是几何列(SDO_GEOMETRY)。从文档中可以看出它是可能的,但我无法创建一个。

Oracle文档的摘录:

  

对于除POINT列之外的非SPATIAL索引中的每个空间列,a   必须指定列前缀长度。 (这是同样的要求   至于索引的BLOB列。)前缀长度以字节为单位。

这是我试图创建索引的查询:

create index multiple_column_index on TestDB (ID, SHAPE) tablespace test;

SHAPE列是此处的几何列。我收到的错误是:

SQL Error: ORA-02327: cannot create index on expression with datatype ADT
02327. 00000 -  "cannot create index on expression with datatype %s"
*Cause:    An attempt was made to create an index on a non-indexable
       expression.
*Action:   Change the column datatype or do not create the index on an
       expression whose datatype is one of  VARRAY, nested table, object,
       LOB, or  REF.

我没有在这里应用列前缀,因为我找不到任何解释其用法的文档。

1 个答案:

答案 0 :(得分:0)

无法将空间列索引为B-Tree索引的一部分。 如果您的某个表上有空间列 - 您必须在该列上创建空间域索引,以便使用空间函数。

没有其他方法可以索引这些列。

空间域索引非常复杂 - 创建它时有很多有趣的选项。 可以正确地配置(和使用)这些索引的性能很高。