Secara umum saya menemukan penggunaan UNION
yang ekstensif menunjukkan desain database yang buruk. Ada kasus di mana UNION
dan UNION ALL
masuk akal tetapi mereka harus relatif jarang di luar ekspresi tabel umum rekursif.
PostgreSQL menyediakan sejumlah besar opsi untuk menjaga kinerja pada satu tabel dapat dikelola, dan seperti yang Anda tunjukkan, indeks parsial adalah cara yang sangat baik untuk mengelola masalah ini.
Masalah utama dengan memecah tabel sedemikian rupa sehingga UNION
pernyataan umum adalah bahwa itu membuat manajemen kunci utama dan asing cukup bermasalah. Secara umum, hampir selalu jauh lebih baik untuk memastikan struktur data Anda jelas dan dapat dikelola terlebih dahulu, lalu khawatir tentang pengoptimalan daripada mengkhawatirkan pengoptimalan dan kemudian mencoba membuat solusi yang dioptimalkan dapat dikelola.