Per una query come questa, un indice parziale coprire solo le righe non sincronizzate servirebbe meglio.
CREATE INDEX ON tbl (id) WHERE sync_done = FALSE;
Tuttavia, per un caso d'uso come questo, potrebbero essere preferibili altri metodi di sincronizzazione per cominciare:
- Dai un'occhiata a
LISTEN
/NOTIFY
. - Oppure usa un trigger
in combinazione con dblink
o un wrapper di dati esterno come
postgres_fdw
(preferibilmente). - O uno dei molti metodi di replica disponibili
.
Replica streaming è stato aggiunto con Postgres 9.0 ed è diventato sempre più popolare.