1

clob列のコンテンツが一意ではないすべての行を識別したいと思います。

私が使用するクエリは次のとおりです。

select
  id,
  clobtext
from
  table t
where 
    (select count(*) from table innerT where dbms_lob.compare(innerT.clobtext, t.clobtext) = 0)>1

ただし、このクエリは非常に低速です。それをスピードアップするための提案はありますか?私はすでにdbms_lob.getlength関数を使用してサブクエリ内のより多くの要素を削除しようとしましたが、実際にはパフォーマンスを改善しませんでした(同じように感じます)。

例をより明確にするために:

テーブル

ID | clobtext

1 | a

2 | b

3 | c

4 | d

5 | a

6 | d

クエリを実行した後。入手したい(順序は関係ありません):

1 | a

4 | d

5 | a

6 | d

4

1 に答える 1

1

過去に、各CLOBに対して(C#コードで)チェックサムを生成しました。

これにより、(チェックサムを生成するために)ioが1回だけ増加しますが、後続のスキャンはより高速になり、値にインデックスを付けることもできます。

TKにはここに良いPL\SQLの例があります: トムに聞いてください

于 2012-12-17T13:11:42.437 に答える