BUG #3642: Tiempos de consultas diferentes - Mailing list pgsql-bugs

From Arley Wilches Marcelo
Subject BUG #3642: Tiempos de consultas diferentes
Date
Msg-id 200709281649.l8SGn2nc008357@wwwmaster.postgresql.org
Whole thread Raw
Responses Re: BUG #3642: Tiempos de consultas diferentes  (Alvaro Herrera <alvherre@commandprompt.com>)
List pgsql-bugs
The following bug has been logged online:

Bug reference:      3642
Logged by:          Arley Wilches Marcelo
Email address:      arley.wilches@gmail.com
PostgreSQL version: 8.2
Operating system:   Linux Ubuntu Server 7.04
Description:        Tiempos de consultas diferentes
Details:

Hola, tengo una aplicacion de alrededor 100 tablas, todas con sus
respectivas llaves foraneas.
Tengo una consulta que tiene alrededor de 12 tablas involucradas, 6
subquerys.
El problemas que tengo es que al realizar la consulta por primera vez se
puede demorar alrededor de 300 a 500 ms, despues de la 5 vez ejecutada con
un intervalo de tiempo de 2 segundos la respuesta de la consulta se llega a
demorar mas de 177.552 ms.

Ya estuve revisando opciones para la creacion de indices, cambio en los
valores de postgresql.conf para el performance de Postgres, pero la verdad
ningun cambio realizado me ha servido para poder arreglar el problema.

Es una aplicacion que esta corriendo en Apache 2 y con php 5.2.1.

De antemano Muchisimas Gracias por cualquier luz que me puedan dar para
poder resolver este tema.

Anexo la consulta que ejecuto.


SELECT COUNT(DATOS.negocio_id) AS total
      FROM (SELECT negocio_razonsocial AS RAZON_SOCIAL,negocio_id,
      negocio_identificador AS IDENTIFICADOR, negocio_direccion AS
DIRECCION,
      usuario_nombre||' '||(CASE WHEN usuario_apellido <>'' THEN
usuario_apellido ELSE ' ' END) AS PROPIETARIO,
      convenio_nombre AS CONVENIO,

      ( CASE
        WHEN A.municipio_sucursal_id IS NOT NULL THEN
A.municipio_sucursal_id
        WHEN A.municipio_depende_mun_id IS NOT NULL THEN (
          SELECT Z.municipio_sucursal_id FROM municipio Z
          WHERE Z.municipio_id = (
            SELECT J.municipio_depende_mun_id
            FROM municipio AS J
            WHERE J.municipio_id = A.municipio_id
          )
        )END
      ) AS sucursal_id,

      A.municipio_departamento_id, A.municipio_id, localidad_id,
      barrio_id, negocio_convenio_id,
evaluacion_tarifa_finalidad_musica_id,
      evaluacion_tarifa_nivel_socioeconomico_id,
evaluacion_tarifa_categoria_id,
      estado_juridico_negocio_estado_id, negocio_estado_negocio_estado_id
      FROM
        negocio, barrio, localidad,
        municipio AS A, usuario, convenio,
        evaluacion_tarifa, pago_periodo,
        negocio_estado_negocio, estado_juridico_negocio,
        estado_juridico, estado_negocio WHERE negocio_id NOT IN (
    SELECT liquidacion_negocio_id FROM liquidacion
    WHERE liquidacion_activo = true
      AND ( ( liquidacion_fecha_limite >= '2007-09-28' AND liquidacion_paga
= 'f' )
        OR (liquidacion_validez >= '2007-09-28' AND liquidacion_paga = 't')
        OR ( liquidacion_anulado = false )
      )
    )
    AND estado_juridico_negocio_estado_id IN(
      SELECT estado_juridico_id
      FROM estado_juridico
      WHERE estado_juridico_bloquea = false
    )
      AND negocio_activo = 't'
      AND negocio_utiliza_musica = 't'
      AND usuario_id = negocio_usuario_id
      AND negocio_barrio_id = barrio_id
      AND barrio_localidad_id = localidad_id
      AND localidad_municipio_id = A.municipio_id
      AND convenio_id = negocio_convenio_id
      AND evaluacion_tarifa_negocio_id = negocio_id
      AND evaluacion_tarifa_activo = 't'
      AND pago_periodo_negocio_id = negocio_id
      AND pago_periodo_activo = 't'
      AND pago_periodo_estado_pago_id = 1
      AND pago_periodo_periodo = '2007'
      AND estado_juridico_negocio_negocio_id = negocio_id
      AND estado_juridico_negocio_activo = true
      AND estado_juridico_negocio_estado_id = estado_juridico_id
      AND negocio_estado_negocio_negocio_id = negocio_id
      AND negocio_estado_negocio_activo = true
      AND negocio_estado_negocio_estado_id = estado_negocio_id ) DATOS,
sucursal, zona
  WHERE sucursal.sucursal_id = DATOS.sucursal_id
  AND sucursal_zona_id = zona_id
   AND sucursal_zona_id =  7 AND sucursal.sucursal_id =  9

pgsql-bugs by date:

Previous
From: "Kevin Grittner"
Date:
Subject: Re: BUG #3641: Concat fails in update
Next
From: Stuart Bishop
Date:
Subject: Nasty tsvector can make dumps unrestorable