Oracle在表的clob列中标识不唯一值

时间:2012-12-17 12:40:34

标签: oracle compare clob

我想识别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 |一个

2 | B'/ P>

3 | ç

4 | d

5 |一个

6 | d

运行查询后。我想得到(订单无所谓):

1 |一个

4 | d

5 |一个

6 | d

1 个答案:

答案 0 :(得分:1)

过去我为每个clob生成了校验和(在我的C#代码中)。

虽然这将导致io一次性增加(以生成校验和) 后续扫描会更快,您也可以将值编入索引

TK在这里有一个很好的PL \ SQL示例: Ask Tom