Una vista materializada almacena resultados precalculados de operaciones costosas, como JOIN y AGGREGATE. Esto permite que las consultas reutilicen dichos resultados en lugar de recalcularlos, lo cual acelera el rendimiento de las consultas.
Límites
Las vistas materializadas solo son compatibles con Hologres V1.3 y versiones posteriores. Si su instancia tiene una versión anterior, consulte Common errors when preparing for an upgrade o únase al grupo de DingTalk de Hologres para enviar sus comentarios. Para obtener más información, consulte How do I get more online support?.
Los límites detallados y las operaciones SQL se documentan en Manage materialized views with SQL.
Crear una vista materializada
-
Sintaxis
Cree una vista materializada:
CREATE MATERIALIZED VIEW <mv_name> AS <QUERY BODY>;mv_name: nombre de la vista materializada. QUERY BODY: sentencia de consulta. Para obtener más información, consulte SELECT.
-
Ejemplos
-
Cree una vista materializada para una tabla sin particiones.
BEGIN; CREATE TABLE base_sales( day text not null, hour int , ts timestamptz, amount float, pk text not null primary key ); CALL SET_TABLE_PROPERTY('base_sales', 'mutate_type', 'appendonly'); --After the materialized view is dropped, run the following command to disable the appendonly property for the source table. --CALL SET_TABLE_PROPERTY('base_sales', 'mutate_type', 'none'); CREATE MATERIALIZED VIEW mv_sales AS SELECT day, hour, avg(amount) AS amount_avg FROM base_sales GROUP BY day, hour; COMMIT; insert into base_sales values(to_char(now(),'YYYYMMDD'),'12',now(),100,'pk1'); insert into base_sales values(to_char(now(),'YYYYMMDD'),'12',now(),200,'pk2'); insert into base_sales values(to_char(now(),'YYYYMMDD'),'12',now(),300,'pk3'); -
Cree una vista materializada para una tabla con particiones.
BEGIN; CREATE TABLE base_sales_p( day text not null, hour int, ts timestamptz, amount float, pk text not null, primary key (day, pk) ) partition by list(day); CALL SET_TABLE_PROPERTY('base_sales_p', 'mutate_type', 'appendonly'); --The day column is a partition key column and must be included in the GROUP BY clause of the view. CREATE MATERIALIZED VIEW mv_sales_p AS SELECT day, hour, avg(amount) AS amount_avg FROM base_sales_p GROUP BY day, hour; COMMIT; create table base_sales_20220101 partition of base_sales_p for values in('20220101');
-
Consultar una vista materializada
Consulte una vista materializada:
SELECT * FROM mv_sales WHERE day = to_char(now(),'YYYYMMDD') AND hour = 12;
Eliminar una vista materializada
-
Sintaxis
Elimine una vista materializada:
DROP MATERIALIZED VIEW <mv_name>;mv_name: nombre de la vista materializada.
-
Ejemplo
DROP MATERIALIZED VIEW mv_sales;