Re: Ayuda con rendimiento..

From: Leonardo Castillo <leonardo(at)hacer(dot)ula(dot)ve>
To: Mario <gonzalemario(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Ayuda con rendimiento..
Date: 2007-02-23 16:24:02
Message-ID: 6.1.1.1.2.20070223122204.028e3ec0@deneb.hacer.ula.ve
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Saludos amigos listeros...

Aquí les mando la consulta principal del sistema y su EXPLAIN. Con respecto
al uso de memoria virtual, cada back end de postgres toma 7MB del SWAP y
200 MB de Shared Memory física.

Consulta:

select distinct
CC.acceso,CC.ext_acceso,CC.UBICACION

from (( ( ( ((DOCUMENT CT01
INNER JOIN CENTRAL CC ON
(CT01.ACCESO = CC.ACCESO AND CT01.EXT_ACCESO = CC.EXT_ACCESO) and
( CT01.NUMERO LIKE '%1%' ) ))
INNER JOIN DOCUMENT CT02 on
(CC.acceso = CT02.acceso and CC.ext_acceso =
CT02.ext_acceso and ( CT02.FECHA_ISO LIKE '2000%' ) ))
INNER JOIN (CODDESC CT03 INNER JOIN DESCRIPT DE03 ON
(CT03.COD_DESC = DE03.CODESC) AND DE03.TIPO = 'PAR' and (
DE03.DESCRIPTOR = 'SANTA LUCIA' AND DE03.TIPO = 'PAR') ) on
(CC.acceso = CT03.acceso and CC.ext_acceso = CT03.ext_acceso ))
INNER JOIN (CODDESC CT04 INNER JOIN DESCRIPT DE04 ON
(CT04.COD_DESC = DE04.CODESC) AND DE04.TIPO = 'EOPN' and Not (
DE04.DESCRIPTOR = 'VALIDADO' AND DE04.TIPO = 'EOPN') ) on
(CC.acceso = CT04.acceso and CC.ext_acceso = CT04.ext_acceso ))
)
, codtit ctt
inner join titulos tit on
(ctt.portada = '1' and ctt.cod_titulo = tit.cod_titulo)
where CC.nivel_reg <> 's'
AND (CC.TIPO_LITER = 'U11')
AND (CC.CODIGO IS NULL OR CC.CODIGO IN ('','U0240000000*'))

and CC.acceso = ctt.acceso and
CC.ext_acceso = ctt.ext_acceso ORDER BY 3 ASC;

Explain:

Unique (cost=59712.53..59712.55 rows=1 width=43)
-> Sort (cost=59712.53..59712.54 rows=1 width=43)
Sort Key: cc.ubicacion, cc.acceso, cc.ext_acceso
-> Nested Loop (cost=16873.87..59712.52 rows=1 width=43)
-> Hash Join (cost=16873.87..59706.38 rows=1 width=47)
Hash Cond: ((ctt.acceso)::text = (ct01.acceso)::text)
Join Filter: (ctt.ext_acceso = ct01.ext_acceso)
-> Hash Join (cost=10696.15..51572.10 rows=521747
width=25)
Hash Cond: (ctt.cod_titulo = tit.cod_titulo)
-> Seq Scan on codtit ctt (cost=0.00..22194.38
rows=521747 width=29)
Filter: ((portada)::text = '1'::text)
-> Hash (cost=5723.51..5723.51 rows=286051
width=4)
-> Seq Scan on titulos
tit (cost=0.00..5723.51 rows=286051 width=4)
-> Hash (cost=6177.71..6177.71 rows=1 width=147)
-> Nested Loop (cost=47.33..6177.71 rows=1
width=147)
-> Nested Loop (cost=47.33..6170.66
rows=1 width=104)
-> Nested
Loop (cost=47.33..6163.52 rows=1 width=79)
-> Nested
Loop (cost=47.33..6148.07 rows=1 width=50)
-> Nested
Loop (cost=47.33..6007.37 rows=22 width=25)
-> Index Scan
using tipodesc01 on descript de03 (cost=0.00..8.28 rows=1 width=4)
Index Cond:
(((tipo)::text = 'PAR'::text) AND ((tipo)::text = 'PAR'::text))
Filter:
((descriptor)::text = 'SANTA LUCIA'::text)
-> Bitmap Heap
Scan on coddesc ct03 (cost=47.33..5968.52 rows=2446 width=29)
Recheck
Cond: (ct03.cod_desc = de03.codesc)
-> Bitmap
Index Scan on cod_desc (cost=0.00..46.72 rows=2446 width=0)
Index
Cond: (ct03.cod_desc = de03.codesc)
-> Index Scan using
document_pk on document ct02 (cost=0.00..6.38 rows=1 width=25)
Index Cond:
(((ct03.acceso)::text = (ct02.acceso)::text) AND (ct03.ext_acceso =
ct02.ext_acceso))
Filter:
((fecha_iso)::text ~~ '2000%'::text)
-> Index Scan using
coddesc_pk on coddesc ct04 (cost=0.00..15.38 rows=5 width=29)
Index Cond:
(((ct04.acceso)::text = (ct03.acceso)::text) AND (ct04.ext_acceso =
ct03.ext_acceso))
-> Index Scan using document_pk on
document ct01 (cost=0.00..7.13 rows=1 width=25)
Index Cond:
(((ct04.acceso)::text = (ct01.acceso)::text) AND (ct04.ext_acceso =
ct01.ext_acceso))
Filter: ((numero)::text ~~
'%1%'::text)
-> Index Scan using central_pk on central
cc (cost=0.00..7.03 rows=1 width=43)
Index Cond: (((ct01.acceso)::text =
(cc.acceso)::text) AND (ct01.ext_acceso = cc.ext_acceso))
Filter: (((nivel_reg)::text <>
's'::text) AND ((tipo_liter)::text = 'U11'::text) AND ((codigo IS NULL) OR
((codigo)::text = ANY (('{"",U0240000000*}'::character varying[])::text[]))))
-> Index Scan using descriptor_pk on descript
de04 (cost=0.00..6.13 rows=1 width=4)
Index Cond: (ct04.cod_desc = de04.codesc)
Filter: (((tipo)::text = 'EOPN'::text) AND
(((descriptor)::text <> 'VALIDADO'::text) OR ((tipo)::text <> 'EOPN'::text)))

Atte.
Leonardo Castillo
Hacer Sistemas C.A.

Oficina: +58(274)2527198, 2528808
Movil: +58(416)4718010

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2007-02-23 16:24:59 Re: Ayuda con rendimiento..
Previous Message Leonel Nunez 2007-02-23 16:15:21 Re: Ayuda con rendimiento..