我有一个 .sqlite 数据库,其中包含 4 500 000 个小图像(总共 24 GB)并且有两列。下面是建表代码:
CREATE TABLE `OldImages` (
`Id` INTEGER NOT NULL,
`Image` BLOB NOT NULL,
CONSTRAINT `PK_Images` PRIMARY KEY(`Id`)
);
我决定将 Id 列表加载到HashSet<long>数据库中以更快地运行时控制数据库中已有的内容,完成 100% 磁盘活动需要 10 个小时。有没有更好的方法来处理这样的事情?除了将列表保存在一个简单的二进制文件中之外——从现在开始我可能最终会这样做,因为它是 36MB 并且可以立即加载。
这是 C# 代码:
var results = new HashSet<long>();
using (var cmd = new SQLiteCommand (Program.DbImages))
using ( var transaction = Program.DbImages.BeginTransaction())
{
SQLiteDataReader reader;
cmd.CommandText = $"Select Id FROM {table}" ;
reader = cmd.ExecuteReader();
while (reader.Read())
{
var result = reader.GetInt64(0);
results.Add((result));
}
transaction.Commit();
}
return results;
紫衣仙女
小唯快跑啊
相关分类