您的位置:首頁 > 軟件教程 > 教程 > PostgreSQL數據庫臨時表去重效率比較與優(yōu)化策略

PostgreSQL數據庫臨時表去重效率比較與優(yōu)化策略

來源:好特整理 | 時間:2024-08-17 10:05:31 | 閱讀:161 |  標簽: T TG POS S 數據庫 策略   | 分享到:

使用的是PostgreSQL 在做大數據量(十萬級)導入時,某些字段和數據庫表里數據(千萬級)重復的需要排除掉,把表數據查詢出來用程序的方式判斷去重效率很低,于是考慮用臨時表。 先把新數據插入到臨時表里,臨時表結構和原始表一致。 用SQL的方式把不重復的數據DataA查詢出來。 把DataA插入到原

最近在處理大數據量(十萬級)導入時,發(fā)現某些字段和數據庫表里的數據(千萬級)重復,需要進行去重處理。由于用程序方式查詢去重效率低下,因此考慮使用臨時表來優(yōu)化去重過程。

具體優(yōu)化步驟如下:

  1. 首先將新數據插入臨時表,其結構與原始表相同。
  2. 通過SQL查詢不重復的數據DataA。
  3. 將DataA插入到原始表中。

鑒于不重復數據還需要進一步處理,若無需特殊處理,可直接使用 insert into select 語句將第2步的數據插入原始表,并清空臨時表。

第2步有兩種方式,一種是使用 not exists 查詢方法,另一種是利用 left join 方式。

測試結果表明,當臨時表數據量較少時, not exists 方式耗時相對較短,但隨著數據量增加耗時逐漸增加。而 left join 方式在數據量較少時用時較長,但隨著數據量增加變化不大。因此,總結出單表去重時,只要導入的數據量不是特別特別大(20w級以上),優(yōu)先使用 not exists 做去重。

然而,當需要對兩個表進行去重時,情況會有所不同。在這種情況下,測試結果顯示對于數據量較少的臨時表, not exists 方式用時相對較短,但隨著數據量增加耗時急劇增加。而 left join 方式對于數據量較少時用時較長,但隨著數據量增加變化不大。因此,當導入的數據在3w以下時,建議使用 not exists ;在3w以上時,建議使用 left join

小編推薦閱讀

好特網發(fā)布此文僅為傳遞信息,不代表好特網認同期限觀點或證實其描述。

相關視頻攻略

更多

掃二維碼進入好特網手機版本!

掃二維碼進入好特網微信公眾號!

本站所有軟件,都由網友上傳,如有侵犯你的版權,請發(fā)郵件[email protected]

湘ICP備2022002427號-10 湘公網安備:43070202000427號© 2013~2025 haote.com 好特網