From: | Gerardo Herzig <gherzig(at)fmed(dot)uba(dot)ar> |
---|---|
To: | Edwin De La Cruz <edwinspire(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Criterio para crear indices |
Date: | 2015-09-16 18:01:01 |
Message-ID: | 978650446.229767.1442426461001.JavaMail.root@fmed.uba.ar |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
----- Mensaje original -----
>
>
>
> Esta es la parte del código donde se vuelve extremadamente lento
> dentro del trigger:
>
> SELECT idevent FROM events WHERE ideventtype =
> ANY(et.auto_close_on_event_defined)
> AND status = 0 AND idaccount = NEW.idaccount AND zu = NEW.zu AND
> idevent != NEW.idevent
>
>
> El campo zu antes era tipo texto, lo cambie a bigint, eso mejoro un
> poco pero sigue lento, no se que mas hacer.
> Que campos debo indexar o que podria hacer?
>
>
> /*
> FOR idevent_for_close_on_restore IN SELECT idevent FROM events WHERE
> ideventtype = ANY(et.auto_close_on_event_defined)
> AND status = 0 AND idaccount = NEW.idaccount AND zu = NEW.zu AND
> idevent != NEW.idevent LOOP
>
> INSERT INTO event_comments(
> comment_event, status,
> idevent)
> VALUES ('Event closed for restoring event idevent '||NEW.idevent, 7,
> idevent_for_close_on_restore);
>
> END LOOP;
> */
>
>
> Todo esto pertenece a una aplicacion web de monitoreo de servidores y
> aplicaciones (o algo asi), la he publicado en
> http://openamsdemo-edwinspire.rhcloud.com/oams_contacts.php
>
> Aunque aun no esta la base de datos instalada.
>
>
> Atte:
> Edwin De La Cruz (edwinspire)
> Quito - Ecuador
Una de las reglas que suelen servir para definir la utilidad de un indice, es que el mismo componga o contenga una deficion parecida al "where" de tu select.
Tal vez un indice por (idaccount, zu)....
Si "status = 0" representa una porcion pequeña de la tabla, entonces crear un indice parcial seria ventajoso tambien.
Otra chance es que lo lento sean las inserciones en event_comments, y no el select previo.
Toma ese select, reemplaza los "NEW.campo" por valores reales, y probalo separado del resto del trigger.
HTH
Gerardo
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripcin:
http://www.postgresql.org/mailpref/pgsql-es-ayuda
From | Date | Subject | |
---|---|---|---|
Next Message | Edwin De La Cruz | 2015-09-16 19:17:18 | Re: Criterio para crear indices |
Previous Message | Edwin De La Cruz | 2015-09-16 14:40:01 | Criterio para crear indices |