Postgresql
如何從表中刪除數百萬條記錄
我正在使用 postgree 9.4 數據庫,我有一個
snapshots
包含 700+ 百萬行的表,我想刪除大約 900 萬行。我嘗試了不同的查詢來刪除記錄,但沒有成功。查詢以刪除特定攝影機的所有記錄:
DELETE FROM snapshots where camera_id = 1248
另一個刪除重新編碼的查詢
snapshot_id
:DELETE from snapshots where snapshot_id >= '1248_201511010000000' and <= '1248_20151130235959000'
建議我從 700 多條記錄中刪除記錄的最快方法是什麼。
除了將操作分成塊之外,我不認為有靈丹妙藥的方法。這個答案可能會派上用場
您可以使用類似
pg_repack
的方法來保持表由 聚集camera_id
,或者snapshot_id
任何一個負責的人都更有問題。這將使將行標記為死的操作更快。使用它可能會更好,snapshot_id
特別是如果它是按時間順序排列的,並且您沒有插入舊快照。在其他操作中,您可以使用索引。