The following bug has been logged online:

Bug reference:      3642
Logged by:          Arley Wilches Marcelo
Email address:      [EMAIL PROTECTED]
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

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
       subscribe-nomail command to [EMAIL PROTECTED] so that your
       message can get through to the mailing list cleanly

Reply via email to