2013/2/19 Joel Benelli <[email protected]> > bom dia Fabrizio, o problema está na subquery do where, caso eu altere a > condição cruzada (CX1.CODHOTEL = CX.CODHOTEL) para uma constante > (CX1.CODHOTEL = 1) o tempo e o custo caem drasticamente. Obrigado pela > atenção.
É claro que cai. Não são consultas equivalentes... =D > > ---------------------------------------------------------------------------------- > SELECT > CX.CODCAIXA , CX.DATATURNO > FROM > CAIXA CX > WHERE > CX.CODCAIXA = > (SELECT MAX (CX1.CODCAIXA ) > FROM CAIXA CX1 > WHERE CX1.CODHOTEL = CX.CODHOTEL ) > AND CX.CODHOTEL = 1 > > ---------------------------------------------------------------------------------- > "Seq Scan on caixa cx (cost=0.00..960.76 rows=64 width=16)" > " Filter: ((codhotel = 1) AND (codcaixa = (SubPlan 2)))" > " SubPlan 2" > " -> Result (cost=0.04..0.05 rows=1 width=0)" > " InitPlan 1 (returns $1)" > " -> Limit (cost=0.00..0.04 rows=1 width=4)" > " -> Index Only Scan Backward using pk_caixa on caixa > cx1 (cost=0.00..466.81 rows=12878 width=4)" > " Index Cond: ((codhotel = cx.codhotel) AND > (codcaixa IS NOT NULL))" > > ---------------------------------------------------------------------------------- > CREATE TABLE caixa > ( > dataturno timestamp(3) without time zone, > turno integer, > operador integer, > salinidinheiro numeric(15,2), > saliniom1 numeric(15,2), > saliniom2 numeric(15,2), > datahorainicio timestamp(3) without time zone, > datahorafim timestamp(3) without time zone, > cotacaoom1 numeric(15,2), > cotacaoom2 numeric(15,2), > codcaixa integer NOT NULL, > codproxcaixa integer, > codhotel integer NOT NULL, > CONSTRAINT pk_caixa PRIMARY KEY (codhotel, codcaixa), > CONSTRAINT idx_caixa_cdh_dtturno_turno UNIQUE (codhotel, dataturno, > turno) > ) > > Por favor, use EXPLAIN ANALYZE, ajuda bastante. Uma consulta alternativa seria essa: SELECT CX.CODCAIXA , CX.DATATURNO FROM CAIXA CX WHERE AND CX.CODHOTEL = 1 ORDER BY CX.CODCAIXA DESC LIMIT 1 Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
