2016-11-07 21 views
1

Oracle DDで索引を作成したい(Oracle Database 11g Enterprise Editionリリース11.2.0.4.0 - 64ビット生産) Oracleドキュメントから読んだ問合せのパフォーマンスを向上させるために、パーティション化されたLOB列に索引を作成できます。たとえば:Oracle:パーティション化されたLOB列を含む表に索引を作成する

CREATE INDEX index_name 
    ON table_name (LOB_column_1, LOB_column_2, ...) LOCAL; 

私は

CREATE INDEX fullsearch_description ON T_DESCRIPTION (UPPER(text)); 

を試みたが、私はエラーました:

エロ

r starting at line : 1 in command - 
CREATE INDEX fullsearch_description ON T_DESCRIPTION (UPPER(text)) 
Error at Command Line : 1 Column : 55 
Error report - 
SQL Error: ORA-02327: cannot create index on expression with datatype LOB 
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. 

答えて

3

あなたがLOB列にBツリーを構築することはできませんが。 case upper(lob) returns lobに そして、oracleは索引を作成するためにロブを使用できません。

このようなものを使用できます。関数インデックスの結果はvarchar2です。しかし、私はこの解決策は有用ではないと思います。

CREATE INDEX fullsearch_description ON T_DESCRIPTION (UPPER(dbms_lob.substr(text,1,1000))); 

ドメインインデックスを使用できます。 Database Data Cartridge - ドメインインデックスについては、章があります。そして、それを実装する方法。 (Using Extensible Indexing, Building Domain Indexes, Defining Operators, Extensible Indexing Interface ,Extensible Optimizer Interface) Oracleは、ドメイン索引の実装をいくつか提供しています。 Oracle Text。 *これらのインデックス方法は非常に複雑です。

関連する問題