我的 SQLite 数据库中有一张包含近 200 万条记录的表,其中一些记录的生日为空,我想使用另一个数据库中的数据进行修复,因为两者的 id 相同,我可以在此更新中引用它。
但是我有一个阅读问题,我相信我会有另一个更新它。
阅读问题,有没有办法从结果中获取所有 id 而不必 1 by 1 读取?
正在执行的查询是(生日被索引):
SELECT id FROM personal WHERE birthday IS NULL OR birthday = ''
目前我这样做是为了检索所有 id(前 300k 条记录需要大约 3 分钟,然后对于 250k 记录增加到大约 9 分钟,并不断增加延迟):
while (reader.Read())
{
ids.Add(reader.GetInt32(0));
}
在我将重用 ids 列表以使用正确的生日对每条记录执行更新之后,我假设我会遇到同样的问题,通过插入 1 x 1 来完成它需要很长时间,这将我们带到什么我相信这将是第二个问题。
有没有一种快速的方法可以用所需的数据更新所有记录?
注意:我将读取更新 SQLITE 的生日将来自远程 MySQL 服务器,因此我无法链接 2 合 1 查询,如更新选择等。
表格格式为:
id
first_name
last_name
birthday
email
status
当我在 SQLite Admin 上运行相同的查询时,需要 2371 毫秒才能吐出所有数据,所以我认为我一定是读错了,或者一读一读一定会伤害它真的很糟糕。