如何有效地从sqlite中的大表中删除重复项?

How to efficiently remove duplicates from a large table in sqlite?

提问人:Zegher V 提问时间:10/7/2023 更新时间:10/7/2023 访问量:35

问:

我有一个由 ~2 亿行和 6 列组成的表,对于它,我只想保留在所有列中唯一的行。

我目前正在做一个 CREATE TABLE TEMP AS SELECT DISTINCT * FROM 板;

这已经运行了 10 个小时并且仍在运行,所以我一定做错了什么。我读过关于按 rowid 进行索引和分组的信息,但我不明白这将如何加快该过程,因为它仍在评估每一行和每一列。我主要在这里寻找洞察力,因为我可能错过了一些东西。

sqlite sqlite3-python

评论


答:

1赞 jhnc 10/7/2023 #1

您可以尝试:

create table temp (
    a,b,c,d,e,f,
    primary key (a,b,c,d,e,f) on conflict ignore
);

insert into temp (a,b,c,d,e,f)
    select a,b,c,d,e,f from plates;

其中,,,,,是相关列。abcdef

评论

0赞 jhnc 10/7/2023
可能代替是否允许 null 值uniqueprimary key
1赞 Zegher V 10/7/2023
哦,哇,我首先可以在插入数据库时使用“on conflict ignore”。这改变了一切:)谢谢!