1
我試圖在兩列上創建非空間索引,其中之一是幾何列(SDO_GEOMETRY)。從文檔看來,這是可能的,但我無法創建一個。Oracle中的非空間索引
從Oracle文檔的摘錄:
對於除POINT列在非空間索引的每個空間列,必須指定一個 柱前綴長度。 (這與索引的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.
我沒有在這裏應用列前綴,因爲我找不到解釋其用法的任何文檔。
爲什麼你需要將空間列添加到常規索引? –
我試圖檢索特定屬性的空間數據。我想通過在空間列和屬性列上創建索引來查看性能。這在Oracle中可能嗎?我可以在PostgreSQL上做到這一點。 –
Oracle SDO支持特殊的空間運算符或函數http://docs.oracle.com/cd/B28359_01/appdev.111/b28400/sdo_operat.htm#SPATL110。這使得在普通的索引中無用 - 這就是爲什麼Oracle不允許在那裏添加它們(no =,<>,<,>,!=可以用於ADT)。您應該在SDO列上創建空間索引。 –