MIT’s blog

個人的なメモかな

UPSERT

データベースのノウハウ不足は否めません。日々勉強になる事が沢山あります。今回はデータベースの基本操作の登録・更新・削除で新しい機能っていうのか方法がある事を知りました。

 

これまでSQLite3では基本INSERTは高速で更新とか遅いって話は知っていて、該当データの存在チェックはせずに登録処理をtryで失敗時にcatchして更新かけるコーディングしてたんですが、INSERT INTO ~ ON CONFLICT() DO UPDATE ~ってまあ、コーディングしてた事をSQL文記述で行う変更をしました。これ、このUPDATE側のSETでは、INSERT側で指定したパラメータをそのまま使うEXCLUDED使う事で、今までINSERTするのにパラメータ用意して、更新時にもパラメータ用意と2度しなければならなかったのも1回で済むってのもありがたい。

 

前回書き込み時に触れた接続文字列は直接指定する事で効いてるかは不明だが、エラーにはなってないので、フルセットアップに再挑戦中。ただ、これ自体では然程スピードが改善されてる感じは部分テストしてみた時にはなかった。少しでも改善されていれば、日付変わる前にフルセットアップが終わると嬉しいかも。

 

追記 2022.4.17
まだバグが残ってたので修正してフルセットアップやり直しですorz