:-)
最快的方法是在表中查找重复的文本,即表中的行在一行中具有至少在整个表中出现两次的文本?该表包含超过1.6亿行。
我有一个表,其中包含以下列:id
,maintext
和maintext_token
,其中to_tsvector(maintext);
是由maintext_token
创建的。此外,我在create index idx_maintext_tokens on tablename using gin(maintext_token);
上创建了一个GIN索引,即id
当前,我正在使用以下内容,但是,这需要花费相当长的时间:
我有一个表,其中包含以下列:maintext
,maintext_token
和to_tsvector(maintext);
,其中maintext_token
是由create index idx_maintext_tokens on tablename using gin(maintext_token);
创建的。此外,我在select maintext, count(maintext)
from ccnc
group by maintext
having count(maintext)>1
order by maintext;
上创建了一个GIN索引,即maintext
maintext_token
我也尝试执行相同的操作,但没有使用select maintext_token, count(maintext_token)
from ccnc
group by maintext_token
having count(maintext_token)>1
order by maintext_token;
,而是使用{{1}}列进行比较:
{{1}}
尽管我期望至少第二个查询要快得多,但这两个查询似乎都运行了很长时间,因为postgres可以使用索引进行比较。
在此先感谢您提供任何见解! 干杯:)
答案 0 :(得分:0)
您说要测试是否相等,因此您可能希望对文本进行散列,然后搜索散列。您可以使用哈希索引,也可以为文本的哈希索引。我最近在一个相关问题上获得了一些帮助,您可以在此处找到详细信息和比较: