私の SQLite データベースには、ほぼ 200 万件のレコードを含む 1 つのテーブルがあり、いくつかのレコードの誕生日は null です。この更新で参照できる両方の ID が同じであるため、別のデータベースからのデータで修正したいと考えています。
しかし、私は読書に問題があり、それを更新するための別のものがあると信じています。
読み取りの問題です。1 つずつ読み取ることなく、結果からすべての ID を取得する方法はありますか?
実行中のクエリは次のとおりです (誕生日はインデックス化されています):
SELECT id FROM personal WHERE birthday IS NULL OR birthday = ''
現在、すべての ID を取得するためにこれを行っています (最初の 300k レコードで 3 分程度かかり、その後 250k レコードで 9 分程度に増加し、遅延が増加し続けます)。
while (reader.Read())
{
ids.Add(reader.GetInt32(0));
}
ids リストを再利用して正しい誕生日の各レコードの更新を実行すると、同じ問題が発生すると想定されます。それが第二の課題になると思います。
すべてのレコードを必要なデータですばやく更新する方法はありますか?
注: SQLITE を更新するために読み取る誕生日は、リモートの MySQL サーバーから取得されるため、update select などの 2 in 1 クエリをリンクすることはできません。
表の形式は次のとおりです。
id
first_name
last_name
birthday
email
status
SQLite Admin で同じクエリを実行すると、すべてのデータを吐き出すのに 2371 ミリ秒かかるので、間違って読んでいるか、1 つずつ読んでいると本当にひどく傷ついているに違いないと思います。