提问人:Zegher V 提问时间:10/7/2023 更新时间:10/7/2023 访问量:35
如何有效地从sqlite中的大表中删除重复项?
How to efficiently remove duplicates from a large table in sqlite?
问:
我有一个由 ~2 亿行和 6 列组成的表,对于它,我只想保留在所有列中唯一的行。
我目前正在做一个 CREATE TABLE TEMP AS SELECT DISTINCT * FROM 板;
这已经运行了 10 个小时并且仍在运行,所以我一定做错了什么。我读过关于按 rowid 进行索引和分组的信息,但我不明白这将如何加快该过程,因为它仍在评估每一行和每一列。我主要在这里寻找洞察力,因为我可能错过了一些东西。
答:
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;
其中,,,,,是相关列。a
b
c
d
e
f
评论
0赞
jhnc
10/7/2023
可能代替是否允许 null 值unique
primary key
1赞
Zegher V
10/7/2023
哦,哇,我首先可以在插入数据库时使用“on conflict ignore”。这改变了一切:)谢谢!
评论