A tabela "movimento" (com todos os pedidos) tem um milhão de registros.
Destes, umas poucas dezenas têm "ecommerce_orderid_fk" não-nulo:
SELECT count(*) FROM movimento WHERE ecommerce_orderid_fk is not null;
count
-------
35
(1 row)
Eis o índice:
"idx_movim_website" UNIQUE, btree (ecommerce_orderid_fk) WHERE
ecommerce_orderid_fk IS NOT NULL
Eis o comando SQL:
EXPLAIN ANALYZE
SELECT ecommerce_orderid as order_id, data_criacao, state_etapa as state,
status_situacao as status, cod_tipomov_fk as tipo, num_orcamento_fk as
numped, valor_total, status_atual as st
FROM website_pedido LEFT OUTER JOIN movimento
ON (ecommerce_orderid = ecommerce_orderid_fk);
Eis o Explain Analyze:
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------
Hash Left Join (cost=71252.85..84184.09 rows=188766 width=99) (actual
time=2114.078..2114.333 rows=35 loops=1)
Hash Cond: (website_pedido.ecommerce_orderid =
movimento.ecommerce_orderid_fk)
-> Seq Scan on website_pedido (cost=0.00..1.35 rows=35 width=80)
(actual time=0.005..0.023 rows=35 loops=1)
-> Hash (cost=51448.60..51448.60 rows=1078660 width=23) (actual
time=2113.922..2113.922 rows=35 loops=1)
-> Seq Scan on movimento (cost=0.00..51448.60 rows=1078660
width=23) (actual time=0.005..1919.003 rows=1077450 loops=1)
Total runtime: 2114.367 ms
(6 rows)
A questão é: porque o índice não está sendo usado?
--
Atenciosamente,
Alexsander da Rosa
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral