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
Views: Raw Message | Whole Thread | Download mbox | Resend email
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

Browse pgsql-es-ayuda by date

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