使用的是PostgreSQL 在做大數(shù)據(jù)量(十萬級)導入時,某些字段和數(shù)據(jù)庫表里數(shù)據(jù)(千萬級)重復的需要排除掉,把表數(shù)據(jù)查詢出來用程序的方式判斷去重效率很低,于是考慮用臨時表。 先把新數(shù)據(jù)插入到臨時表里,臨時表結(jié)構(gòu)和原始表一致。 用SQL的方式把不重復的數(shù)據(jù)DataA查詢出來。 把DataA插入到原
最近在處理大數(shù)據(jù)量(十萬級)導入時,發(fā)現(xiàn)某些字段和數(shù)據(jù)庫表里的數(shù)據(jù)(千萬級)重復,需要進行去重處理。由于用程序方式查詢?nèi)ブ匦实拖,因此考慮使用臨時表來優(yōu)化去重過程。
具體優(yōu)化步驟如下:
鑒于不重復數(shù)據(jù)還需要進一步處理,若無需特殊處理,可直接使用
insert into select
語句將第2步的數(shù)據(jù)插入原始表,并清空臨時表。
第2步有兩種方式,一種是使用
not exists
查詢方法,另一種是利用
left join
方式。
測試結(jié)果表明,當臨時表數(shù)據(jù)量較少時,
not exists
方式耗時相對較短,但隨著數(shù)據(jù)量增加耗時逐漸增加。而
left join
方式在數(shù)據(jù)量較少時用時較長,但隨著數(shù)據(jù)量增加變化不大。因此,總結(jié)出單表去重時,只要導入的數(shù)據(jù)量不是特別特別大(20w級以上),優(yōu)先使用
not exists
做去重。
然而,當需要對兩個表進行去重時,情況會有所不同。在這種情況下,測試結(jié)果顯示對于數(shù)據(jù)量較少的臨時表,
not exists
方式用時相對較短,但隨著數(shù)據(jù)量增加耗時急劇增加。而
left join
方式對于數(shù)據(jù)量較少時用時較長,但隨著數(shù)據(jù)量增加變化不大。因此,當導入的數(shù)據(jù)在3w以下時,建議使用
not exists
;在3w以上時,建議使用
left join
。
使用VSCode搭建UniApp + TS + Vue3 + Vite項目
閱讀在MDK開發(fā)環(huán)境下自定義安裝與切換不同編譯器版本的方法
閱讀musl libc 與 glibc 在 .NET 應用程序中的兼容性
閱讀受 LabelImg 啟發(fā)的基于 web 的圖像標注工具,基于 Vue 框架
閱讀光影精靈10 Win1+Ubuntu18.04 雙系統(tǒng) 踩坑記錄
閱讀LoRA模型:小型Stable Diffusion模型的微調(diào)技術(shù)
閱讀肉夾饃(Rougamo)編譯時AOP組件介紹及IoC/DI擴展
閱讀LOTO示波器統(tǒng)計曲線和故障分析pass/fail測試
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]
湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2024 haote.com 好特網(wǎng)