Ogólnie uważam, że szerokie użycie UNION
sugeruje zły projekt bazy danych. Istnieją przypadki, w których UNION
i UNION ALL
mają sens, ale powinny być stosunkowo rzadkie poza rekurencyjnymi typowymi wyrażeniami tabelowymi.
PostgreSQL zapewnia dość dużą liczbę opcji umożliwiających zarządzanie wydajnością pojedynczej tabeli, a jak wskazujesz, indeksy częściowe są bardzo dobrym sposobem na rozwiązanie tego problemu.
Główny problem z dzieleniem tabel tak, że takie UNION
Powszechne są stwierdzenia, że sprawia to, że zarządzanie kluczami podstawowymi i obcymi jest dość problematyczne. Ogólnie rzecz biorąc, prawie zawsze lepiej jest najpierw upewnić się, że struktura danych jest przejrzysta i łatwa w zarządzaniu, a następnie martwić się optymalizacją, niż martwić się o optymalizację, a następnie próbować zarządzać zoptymalizowanym rozwiązaniem.