6 votos

Qgis es lento con la compleja capa 'postgis query'. ¿Cómo acelerarlo?

Tengo una capa postgis en Qgis que es resultado de una consulta compleja. Cada vez que actualizo la pantalla, Qgis vuelve a ejecutar la consulta y eso es lento. ¿Alguna sugerencia para acelerar?

EDIT - Aquí está la consulta:

 SELECT 
 parcela.id AS id, 
 st_union(areas.the_geom) AS geom,
  (((((('p'::text || round(avg(to_number(dado.valor -> 'pequena'::text, '99'::text)) * 10::numeric, 2)) || ',m'::text) || round(avg(to_number(dado.valor -> 'media'::text, '99'::text)) * 10::numeric, 2)) || ',g'::text) || round(avg(to_number(dado.valor -> 'grande'::text, '99'::text)) * 10::numeric, 2)) || ',mo'::text) || round(avg(to_number(dado.valor -> 'morta'::text, '99'::text)) * 10::numeric, 2) AS "legenda", 
  round(avg(to_number(dado.valor -> 'pequena'::text, '99'::text)) * 10::numeric, 2) AS pequenas, 
  round(avg(to_number(dado.valor -> 'media'::text, '99'::text)) * 10::numeric, 2) AS medias, 
  round(avg(to_number(dado.valor -> 'grande'::text, '99'::text)) * 10::numeric, 2) AS grandes, 
  round(avg(to_number(dado.valor -> 'morta'::text, '99'::text)) / 10::numeric, 2) AS mortas

  FROM petr.dado, petr.parcela, petr.parcela_rel, petr.areas
  WHERE dado.parcela_id = parcela.id AND parcela_rel.area_id = areas.gid AND parcela_rel.parcela_id = parcela.id
  GROUP BY parcela.id

4voto

Lars Mæhlum Puntos 4569

Hola

¿Es el renderizado de QGIS lo que ralentiza las cosas o la consulta PostGIS? Está la consulta en la definición de una vista o por qué necesita ser evaluada más de una vez?

Si el problema es la consulta PostGIS, ¿por qué no se puede crear una tabla a partir de la consulta para hacerla estática y añadirle un índice espacial?

Si necesitas que sea una consulta dinámica necesitas compartir más información sobre la consulta por si puede ser optimizada de alguna manera.

Saludos Nicklas

3voto

Frank Farmer Puntos 150

Si aún no lo ha hecho, la creación de índices en las columnas de la condición WHERE acelerará considerablemente el proceso.

0voto

NEW Puntos 1250

QGIS realiza más trabajo para cargar una vista que para cargar una tabla. "Ver" una vista en cualquier visor de base de datos como pgAdmin también es lento - no es una cosa de QGIS, es una cosa de la vista.

Mis datos no cambian mucho, más o menos una vez al año, así que sólo utilizo tablas. No encuentro que necesite la abstracción que proporciona una vista. (Buena discusión aquí https://stackoverflow.com/questions/4378068/when-to-use-a-view-instead-of-a-table )

Sin duda, la indexación le agilizará las cosas. Pero también lo hará el uso de una tabla :)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X