Bom dia pessoal,

Tenho um sistema web, cuja principal função é buscar em uma tabela com
aproximadamente 2.4 milhões de registros.

Nessa tabela está sendo executado para busca +/- o seguinte SQL:



select nome from nome_produto where nome like upper('%abacaxi%') -- Os dados
da tabela nome_produto já estão em upper-case




O problema é a demora, cerca de 1-1.2 segundos por query, isso em um sistema
web com muitos acessos simultâneos está matando o servidor e gerando
lentidão no sistema.
Existe alguma forma  de agilizar uma busca deste tipo?





Resultado do Vacuum Analyze:

INFO:  vacuuming "public.nome_produto"INFO:  index "nome_produto_pkey" now
contains 6528 row versions in 15927 pages
DETAIL:  0 index row versions were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.09s/0.07u sec elapsed 0.16 sec.INFO:  index "nome_produto_idx" now
contains 6528 row versions in 76544 pages
DETAIL:  0 index row versions were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.50s/0.28u sec elapsed 0.78 sec.
INFO:  "nome_produto": found 0 removable, 6528 nonremovable row versions in
40501 out of 80888 pages
DETAIL:  0 dead row versions cannot be removed yet.
There were 2428834 unused item pointers.
0 pages are entirely empty.
CPU 1.71s/0.68u sec elapsed 8.11 sec.
INFO:  analyzing "public.nome_produto"INFO:  "nome_produto": scanned 30000
of 80888 pages, containing 894698 live rows and 0 dead rows; 30000 rows in
sample, 2412344 estimated total rows
Tempo total de execução da consulta: 10054 ms.




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

Responder a