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 函数来消除子查询中的更多元素,但我并没有真正提高性能(感觉一样)。

为了更清楚地举一个例子:

桌子

身份证 | clobtext

1 | 一个

2 | b

3 | C

4 | d

5 | 一个

6 | d

运行查询后。我想得到(顺序无关紧要):

1 | 一个

4 | d

5 | 一个

6 | d

4

1 回答 1

1

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

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

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

于 2012-12-17T13:11:42.437 回答