In Oracle, it is possible to refresh just part of the data. Ma in PostgreSQL, le viste materializzate sono supportate dal 9.3 (la versione attuale ora), che non è così lunga. Quindi mi chiedo: è possibile aggiornare solo una parte dei dati nella vista materializzata in PostgreSQL 9.3? Se sì, come si fa?È possibile aggiornare parzialmente una vista materializzata in PostgreSQL?
risposta
PostgreSQL non supporta ancora gli aggiornamenti progressivi/parziali delle viste materializzate.
9.4 aggiunge REFRESH MATERIALIZED VIEW CONCURRENTLY
ma deve essere rigenerato interamente.
Speriamo di ricevere supporto in 9.5 se qualcuno è abbastanza entusiasta. È possibile farlo solo senza trigger/regole definiti dall'utente per semplici viste materializzate, e sarebbe necessario un supporto speciale per gestire anche cose come l'aggiornamento incrementale di un count(...) ... GROUP BY ...
.
La risposta Oracle a cui si fa riferimento non è in realtà un aggiornamento incrementale. Aggiorna le tue partizioni. Affinché PostgreSQL supporti in modo nativo, dovrebbe prima supportare il partizionamento dichiarativo reale, cosa che non avviene, anche se stiamo discutendo se è possibile farlo per 9.5.
Mi sono appena imbattuto in un problema simile. Imparando da Craig's answer che non è possibile, ho usato una soluzione alternativa. I decostruiti vista materializzata e unito le singole parti in un VIEW
:
- Creare un
MATERIALIZED VIEW
per ogni colonna in questione (material_col1
,material_col2
, ecc), utilizzando una colonna comuneid
. - Utilizzare un regolare
VIEW
(fake_materialized_view
) che unisce ilMATERIALIZED VIEW
s tabelle sulla colonnaid
REFRESH MATERIALIZED VIEW
come necessario- Usa la tua query
fake_materialized_view
invece
Il VIEW
apparirebbe un po 'come questo:
CREATE VIEW fake_materialized_view AS
SELECT m1.id, m1.col1, m2.col2
FROM material_col1 as m1 LEFT JOIN
material_col2 as m2
ON m1.id = m2.id;
sfortunatamente è utile solo per "colonne partizionate", non per "righe partizionate" (che non sono necessariamente mappate su semplici partizioni definibili e piuttosto su singole righe) –
@AndreasDietrich Suppongo che tu possa fare qualcosa di simile con 'UNION ALL'. .. – n1000
- 1. Come aggiornare vista materializzata in Oracle
- 2. Come posso pg_dump una vista materializzata come una vista materializzata e non una tabella?
- 3. Come aggiornare parzialmente mete.users.profile?
- 4. Come si può creare una vista materializzata in sqlite?
- 5. Oracle vista materializzata errore: codice incluso
- 6. Come implementare la Vista materializzata con MySQL?
- 7. aggiornare una vista Android
- 8. È possibile mascherare una vista in Android?
- 9. È possibile deallocare parzialmente la memoria?
- 10. Come ALTERare una vista in PostgreSQL
- 11. Come aggiornare una vista in phpMyAdmin?
- 12. È possibile aggiornare in batch in Sequel?
- 13. Rimuovi le informazioni dello spazio tabella da Vista materializzata DDL
- 14. È possibile avere una matrice di hstore in PostgreSQL
- 15. PostgreSQL: è possibile cast enum in intero?
- 16. è possibile aggiornare una riga esistente in DB, usando liquibase?
- 17. È possibile aggiornare una chiave hash in dinamo amazzone db
- 18. È possibile aggiornare ModelState.IsValid manualmente?
- 19. non è possibile aggiornare l'articolo in DynamoDB
- 20. Creazione di una vista materializzata che si aggiorna ogni 5 minuti
- 21. È possibile posizionare una vista su un'altra in Android?
- 22. È possibile inserire dati in una vista MySQL?
- 23. È possibile memorizzare nella cache query LINQ parzialmente eseguite?
- 24. E 'possibile aggiornare la vista di un frammento
- 25. Android: è possibile fare una copia di una vista?
- 26. È possibile leggere un data.table da PostgreSQL?
- 27. Come è possibile aggiornare dinamicamente il colore di una SeekBar?
- 28. È possibile aggiornare le righe da una coppia chiave/valore?
- 29. È possibile utilizzare una vista configurata per la superclasse se in Pyramid è stata configurata una vista per una classe?
- 30. Come licenziare UITapGestureRecognizer su una vista figlia parzialmente ritagliata dalla vista genitore?
Puoi fornire un esempio di cosa intendi? Pensavo che il punto di vista materializzato fosse mostrare solo una parte dei dati. – Lucas
La risposta a cui ti sei collegato per Oracle non è molto convincente. Dice che puoi forzatamente scambiare una delle partizioni per una MV partizionata. Dal momento che il partizionamento in Postgresql non è realmente una funzione incorporata, ma qualcosa che hai fatto da solo, suppongo che potresti avere lo stesso approccio anche su Postgres. – Thilo