optiminizacion de select (order by desc limit 1)

From: uno dos <refreegrata(at)yahoo(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: optiminizacion de select (order by desc limit 1)
Date: 2010-05-12 15:27:50
Message-ID: 75721.3991.qm@web38405.mail.mud.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola lista. Miren, en un sistema que he desarrollado, de una parte a este tiempo he notado que postgresql se toma mucha CPU(100%)
ya, tengo dos dudas

Duda 1
¿Es normal que postgresql se tome el 100% de cpu pero por tiempo muy reducido, o aún así es mucho?(shared buffers de 150 mb, si, se que es bajo)

Duda 2
Mi segunda duda,: mirando y re-mirando mi código, para ver si puedo optimizar mis consultas lo única consulta que encuentro que no me gusta, y que quizás pudiera ser causante del lío es una del tipo
---------------------------------------------------------------------------------------------------------------------------------
select dato1 FROM tabla WHERE codigo_2=NEW.codigo_2 AND codigo_3=NEW.codigo_3 AND codigo_4=NEW.codigo_4 ORDER BY codigo DESC LIMIT 1 FOR UPDATE;
---------------------------------------------------------------------------------------------------------------------------------

Debo hacer varios tipos de consultas similares dentro de la función de un TRIGGER BEFORE, por un tema de validaciones,  no puedo controlarlas, sólo a través del código de la aplicación, ya que en algunas ocasiones (según requisitos del jefe) debiera intervenirse directamente la base de datos.

Mi pregunta es
Puedo hacer esto "ORDER BY codigo DESC LIMIT 1"  de alguna manera más óptima.

EXPLAIN de una  de estas consultas.
"Limit  (cost=21.57..21.57 rows=1 width=95)"
"  ->  Sort  (cost=21.57..21.58 rows=5 width=95)"
"        Sort Key: codigo"
"        ->  Index Scan using fki_tiene_pr_rx on existencia  (cost=0.00..21.54 rows=5 width=95)"
"              Index Cond: (codigo_producto = 686)"

En todo caso demora entre 35 y 45 ms.

P.D.: Es una típica aplicación web de inventarios(por eso el trigger before, que controla el stock), con una base de datos de apenas unos 50-60mb.

Bueno, eso es, Saludos por allá.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Lennin Caro 2010-05-12 15:50:55 Re: duda con insert de muchas filas
Previous Message Alvaro Herrera 2010-05-12 14:47:59 Re: duda con insert de muchas filas