david buenaño escribió: > Hola, tengo una duda, levante la siguiente consulta: > > SELECT > '01.INCLUSION' "ESTADO RELACION", '01.DISCAPACIDAD', "count"(*) > FROM bjg_pago > WHERE pag_estado = 'ACT' and pep_id = 25 > and pag_benecedula NOT in (select pag_benecedula from bjg_pago where pep_id > = 24 ) > and pag_tipobeneficiario = 'DISCAPACIDAD' > GROUP BY 2 > > y el tiempo de la consulta es de 54 s. > > reemplace la condición del where apuntando a otra relación de la misma base > de datos y se redujo el tiempo de respuesta a 0,469 s > > la nueva consulta es: > > SELECT > '01.INCLUSION' "ESTADO RELACION", '01.DISCAPACIDAD', "count"(*) > FROM bjg_pago > WHERE pag_estado = 'ACT' and pep_id = (SELECT pep_id from bjg_periodopago > where pep_estado = '1') > and pag_benecedula NOT in (select pag_benecedula from bjg_pago where pep_id > = (SELECT pep_id -1 from bjg_periodopago where pep_estado = '1') ) > and pag_tipobeneficiario = 'DISCAPACIDAD' > GROUP BY 2 > > deseo conocer porque se redujo tanto el tiempo de la consulta
Ejecuta EXPLAIN ANALYZE de ambas consultas y adjunta un archivo de texto con lo que emite, teniendo cuidado de no dañar el formato del texto (indentación y preservas las líneas largas). -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda