使用的是PostgreSQL 在做大數(shù)據(jù)量(十萬(wàn)級(jí))導(dǎo)入時(shí),某些字段和數(shù)據(jù)庫(kù)表里數(shù)據(jù)(千萬(wàn)級(jí))重復(fù)的需要排除掉,把表數(shù)據(jù)查詢出來(lái)用程序的方式判斷去重效率很低,于是考慮用臨時(shí)表。 先把新數(shù)據(jù)插入到臨時(shí)表里,臨時(shí)表結(jié)構(gòu)和原始表一致。 用SQL的方式把不重復(fù)的數(shù)據(jù)DataA查詢出來(lái)。 把DataA插入到原
最近在處理大數(shù)據(jù)量(十萬(wàn)級(jí))導(dǎo)入時(shí),發(fā)現(xiàn)某些字段和數(shù)據(jù)庫(kù)表里的數(shù)據(jù)(千萬(wàn)級(jí))重復(fù),需要進(jìn)行去重處理。由于用程序方式查詢?nèi)ブ匦实拖,因此考慮使用臨時(shí)表來(lái)優(yōu)化去重過(guò)程。
具體優(yōu)化步驟如下:
鑒于不重復(fù)數(shù)據(jù)還需要進(jìn)一步處理,若無(wú)需特殊處理,可直接使用
insert into select
語(yǔ)句將第2步的數(shù)據(jù)插入原始表,并清空臨時(shí)表。
第2步有兩種方式,一種是使用
not exists
查詢方法,另一種是利用
left join
方式。
測(cè)試結(jié)果表明,當(dāng)臨時(shí)表數(shù)據(jù)量較少時(shí),
not exists
方式耗時(shí)相對(duì)較短,但隨著數(shù)據(jù)量增加耗時(shí)逐漸增加。而
left join
方式在數(shù)據(jù)量較少時(shí)用時(shí)較長(zhǎng),但隨著數(shù)據(jù)量增加變化不大。因此,總結(jié)出單表去重時(shí),只要導(dǎo)入的數(shù)據(jù)量不是特別特別大(20w級(jí)以上),優(yōu)先使用
not exists
做去重。
然而,當(dāng)需要對(duì)兩個(gè)表進(jìn)行去重時(shí),情況會(huì)有所不同。在這種情況下,測(cè)試結(jié)果顯示對(duì)于數(shù)據(jù)量較少的臨時(shí)表,
not exists
方式用時(shí)相對(duì)較短,但隨著數(shù)據(jù)量增加耗時(shí)急劇增加。而
left join
方式對(duì)于數(shù)據(jù)量較少時(shí)用時(shí)較長(zhǎng),但隨著數(shù)據(jù)量增加變化不大。因此,當(dāng)導(dǎo)入的數(shù)據(jù)在3w以下時(shí),建議使用
not exists
;在3w以上時(shí),建議使用
left join
。
count(*)、count(1)哪個(gè)更快?面試必問(wèn):通宵整理的十道經(jīng)典MySQL必問(wèn)面試題
閱讀從需求分析、產(chǎn)品設(shè)計(jì)到部署交付各階段說(shuō)明
閱讀如何利用七牛云進(jìn)行數(shù)據(jù)備份和刪除
閱讀強(qiáng)化學(xué)習(xí)筆記之【ACE:Off-PolicyActor-CriticwithCausality-AwareEntropyRegularization】
閱讀使用MailKit在.NET Core中收發(fā)郵件的完整示例
閱讀WiFi基礎(chǔ)(六):天線基礎(chǔ)知識(shí)
閱讀OpenAI官方開(kāi)源多智能體框架Swarm,社區(qū)反響熱烈
閱讀Vue-Vben-Admin:功能強(qiáng)大的Vue3后臺(tái)管理系統(tǒng)模板
閱讀流批一體:數(shù)據(jù)領(lǐng)域的熱門(mén)話題
閱讀深度解析Spring AI:請(qǐng)求與響應(yīng)機(jī)制的核心邏輯
閱讀.NET云原生應(yīng)用實(shí)踐(一):從搭建項(xiàng)目框架結(jié)構(gòu)開(kāi)始
閱讀llama.cpp:一個(gè)適用于中小型研發(fā)企業(yè)的高性能CPU/GPU大語(yǔ)言模型推理框架
閱讀Windows應(yīng)急響應(yīng)-Auto病毒
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]
湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2024 haote.com 好特網(wǎng)