我正在尝试在两列上创建非空间索引,其中一列是几何列(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.
我没有在这里应用列前缀,因为我找不到任何解释其用法的文档。
答案 0 :(得分:0)
无法将空间列索引为B-Tree索引的一部分。 如果您的某个表上有空间列 - 您必须在该列上创建空间域索引,以便使用空间函数。
没有其他方法可以索引这些列。
空间域索引非常复杂 - 创建它时有很多有趣的选项。 可以正确地配置(和使用)这些索引的性能很高。