Remova os índices com pouca utilização.
Farei isso, porém estou tentando entender porque alguns índices não estão
sendo utilizados antes de removê-los.

Não é a única. Se você criar um índice GIN, você pode usar a mesma consulta
acima que ele irá usar o índice. Uma vantagem do índice GIN em relação ao
B-Tree é que você pode usar o % no início da expressão regular. Veja:


Com este tipo de índice (GIN), uma consulta realizada utilizando operador
de igualdade, ele não é utilizado?
CREATE INDEX idx_nm_cliente ON cliente USING gin (nm_cliente gin_trgm_ops);

EXPLAIN ANALYZE SELECT * FROM cliente WHERE nm_cliente = 'FERNANDO LUIS
CAMBIAGHI';
"Seq Scan on cliente  (cost=0.00..134940.64 rows=2 width=354) (actual
time=671.028..765.089 rows=1 loops=1)"
"  Filter: ((nm_cliente)::text = 'FERNANDO LUIS CAMBIAGHI'::text)"
"  Rows Removed by Filter: 2835970"
"Planning time: 0.399 ms"
"Execution time: 765.195 ms"

EXPLAIN ANALYZE SELECT * FROM cliente WHERE nm_cliente LIKE 'FERNANDO LUIS
CAMBIAGHI';
"Bitmap Heap Scan on cliente  (cost=308.02..316.01 rows=2 width=354)
(actual time=1219.516..1219.517 rows=1 loops=1)"
"  Recheck Cond: ((nm_cliente)::text ~~ 'FERNANDO LUIS CAMBIAGHI'::text)"
"  Heap Blocks: exact=1"
"  ->  Bitmap Index Scan on idx_nm_cliente  (cost=0.00..308.02 rows=2
width=0) (actual time=1219.504..1219.504 rows=1 loops=1)"
"        Index Cond: ((nm_cliente)::text ~~ 'FERNANDO LUIS
CAMBIAGHI'::text)"
"Planning time: 0.522 ms"
"Execution time: 1219.704 ms"


Neste caso é só para entender mesmo, porque para este tipo de campo, onde
mais de 90% das pesquisas são realizadas utilizando LIKE, é muito melhor
este comportamento que o que tenho atualmente.


Obrigado Euler.
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a