Olá! Vejam só isso.
Obs.: os detalhes seguem, pois podem ser úteis a algum colega iniciante. Cenário: Banco de dados de CEPs com mais de 633.401 registros cep_brasil. tabela cep_full sem índice tabela cep_full com índice Criando o banco com codificação e a tabela cep_full: postgres=# create database cep_brasil encoding 'win1252'; postgres=# \c cep_brasil cep_brasil=# create table cep_full ( cep_brasil(# cep char(8), cep_brasil(# tipo char(72), cep_brasil(# logradouro char(70), cep_brasil(# bairro char(72), cep_brasil(# municipio char(60), cep_brasil(# uf char(2) cep_brasil(# ); Importanto do CSV (http://tudoemum.ribafs.net/includes/cep_brasil.sql.bz2) cep_brasil=# \copy cep_full from E:\Enviar\cep_brasil_unique.csv Essa é interessante para quem não conhece. Crio uma segunda tabela tendo como base uma consulta sobre outra tabela, já importando todos os registros: cep_brasil=# create table cep_full_index as select * from cep_full; Alterar a tabela cep_full_index adicionando índice: cep_brasil=# alter table cep_full_index add constraint cep_pk primary key (cep); Atualizando as estatísticas: cep_brasil=# vacuum analyze; Pegando o plano de consulta da primeira consulta: cep_brasil=# explain select logradouro from cep_full where cep='60420440'; QUERY PLAN ------------------------------------------------------------- Seq Scan on cep_full (cost=0.00..33254.51 rows=1 width=71) Filter: (cep = '60420440'::bpchar) (2 rows) O plano da segunda: cep_brasil=# explain select logradouro from cep_full_index where cep='60420440'; QUERY PLAN ------------------------------------------------------------------------------ Index Scan using cep_pk on cep_full_index (cost=0.00..8.37 rows=1 width=71) Index Cond: (cep = '60420440'::bpchar) (2 rows) Isso foi interessante, pois numa tabela grande gasta um tempo irrizório. Como eu estava fazendo, usando o \timing, a consulta demorava muito. Agora vejam só quanto ao cache, realizando as consultas de fato: cep_brasil=# \timing Timing is on. cep_brasil=# select count(cep) from cep_full_index; count -------- 633401 (1 row) Time: 499,263 ms cep_brasil=# select count(cep) from cep_full; count -------- 633401 (1 row) A tabela sem índice gasta menos tempo que a com índice. Valeu Roberto. -- Ribamar FS - [EMAIL PROTECTED] http://ribafs.net _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
