我在SQLite3中有一个巨大的表——3600万行.在这个非常大的表中,有两列:
-
hash
-文本 -
d
-真的
有些行是重复的.也就是说,hash
和d
都有相同的值.如果两个哈希相同,那么d
的值也相同.然而,两个相同的d
并不意味着两个相同的hash
.
我要删除的行.我没有主键列.
最快的方法是什么?
我在SQLite3中有一个巨大的表——3600万行.在这个非常大的表中,有两列:
hash
-文本d
-真的有些行是重复的.也就是说,hash
和d
都有相同的值.如果两个哈希相同,那么d
的值也相同.然而,两个相同的d
并不意味着两个相同的hash
.
我要删除的行.我没有主键列.
最快的方法是什么?
你需要一种区分行的方法.根据你的 comments ,你可以用特别的rowid column.
要删除重复项,请保留最低的rowid
个/(hash,d)
:
delete from YourTable
where rowid not in
(
select min(rowid)
from YourTable
group by
hash
, d
)