Zastanawiam się, jaki byłby najbardziej efektywny sposób usuwania dużej liczby wierszy z PostgreSQL, ten proces byłby codziennie częścią powtarzającego się zadania masowego importowania danych (delta wstawiania + usuwania) do tabeli. Mogą być tysiące, potencjalnie miliony wierszy do usunięcia.
Mam plik kluczy podstawowych, po jednym w wierszu. Dwie opcje, o których myślałem, były zgodne z poniższymi, ale nie znam / nie rozumiem wystarczająco dużo elementów wewnętrznych PostgreSQL, aby podjąć świadomą decyzję, która byłaby najlepsza.
- Wykonaj
DELETE
zapytanie dla każdego wiersza w pliku, używając prostegoWHERE
klucza podstawowego (lub zgrupuj usuwane partien
za pomocąIN()
klauzuli) - Zaimportuj klucze podstawowe do tabeli tymczasowej za pomocą
COPY
polecenia, a następnie usuń je z tabeli głównej za pomocą łączenia
Wszelkie sugestie będą mile widziane!