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
