Skip site navigation (1) Skip section navigation (2)

Acerca del rendimiento de una consulta

From: Carolina Román Salgado <rossyr(at)abulafia(dot)ciencias(dot)uchile(dot)cl>
To: Foro PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Acerca del rendimiento de una consulta
Date: 2009-10-28 19:36:52
Message-ID: 1256758612.6928.279.camel@swpx22.sw.ehu.es (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Hola a todos

Trabajo con Drupal sobre Postgres y estoy escribiendo un código que
despliega listas de ciertos contenidos. Mis búsquedas son cosas del
tipo 

SELECT 
	area.title, area.brief_description, area.main_picture 
	FROM node n JOIN area USING (vid)
	ORDER BY title;

donde node contiene información acerca de la creación de una página,
mientras que area contiene la información real, el contenido de esa
página.

Para que mi código respete los permisos definidos por el sistema, yo
debo pasar mis búsquedas sql por una función que se llama
db_rewrite_sql, que despedaza mi búsqueda y le agrega cláusulas para
asegurar que cada usuario ve una lista con las páginas que está
autorizado a ver. Después de pasar por esa función, la misma consulta
que está arriba se ve:

SELECT 
	area.title, area.brief_description, area.main_picture 
	FROM (SELECT DISTINCT ON (nid) * FROM node) n JOIN area USING (vid)
INNER JOIN node_access na ON na.nid = n.nid 
	WHERE (na.grant_view >= 1 
		AND ((na.gid = 0 AND na.realm = 'all') 
			OR (na.gid = 2 AND na.realm = 'term_access') 
			OR (na.gid = 6 AND na.realm = 'term_access'))
		)
	ORDER BY title;

Tanto node_access como term_access se refieren a los permisos definidos
en ciertas tablas.

Resulta que la segunda consulta me muestra resultados duplicados. No sé
por qué todavía, pero basta con agregar un DISTINCT para que todo se
resuelva. Mi pregunta es si vale la pena pasar un buen rato intentando
reescribir mi consulta para evitar tener que usar distinct. La
diferencia es muy pequeña, del orden de 1ms. ¿En general, debo evitar
usar distinct?

Gracias

-- 
Carolina Román Salgado <rossyr(at)abulafia(dot)ciencias(dot)uchile(dot)cl>


Responses

pgsql-es-ayuda by date

Next:From: Carlos BazánDate: 2009-10-28 20:36:36
Subject: Consulta a catálogo
Previous:From: XaviDate: 2009-10-28 17:50:02
Subject: Re: Problemas con cifras o redondeno

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group