260.000 é piada para o PostgreSQL, mesmo para realizar buscas. Eu trabalho com um banco com 46 milhões de registros em uma única tabela usando PostgreSQL. Não é o banco principal, é de redundância, mas ele aguenta muito bem, desde que com índices bem feitos.
No meu caso: - Desnormalizei tudo, usei tudo em uma única tabela e não faço nenhum join. (sim, repliquei colunas.. campos vazios... etc) - Separei os campos principais de buscas em mais de um campo. E coloquei índice para todos esses campos. Ex: nome_completo -> primeiro_nome, ultimo_nome. Então, # select * from tabela where primeiro_nome = 'Jose' and ultimo_nome = 'Silva'; de certa forma, fica como se fosse um like e ao mesmo tempo com muito desempenho. - Criei esses índices de nomes usando o próprio valor do campo no índice. O PostgreSQL por default faz um hash do valor para melhor uso de memória e a comparação. Pra fazer isso: # create index idx_nome on tabela (nome varchar_pattern_ops); Esse varchar_pattern_ops que faz isso acontecer Com isso, a consulta: # SELECT * FROM tabela WHERE nome LIKE 'JOS%' utiliza o índice para fazer o LIKE. Dessa forma, a busca será muito rápida (te garanto, no meu caso ficou em ~25 ms), mas esse LIKE só vai funcionar para quando a busca iniciar com determinado valor. LIKE '%ANA%' ou LIKE '%ANA' vão funcionar, mas fazendo full scan. Enfim, tudo que fiz nesse meu case escrevi nesse post: http://www.emersonmoretto.com/articles/tag/postgres%209 * Não sou especialista em PostgreSQL, apenas admiro, defendo e uso desde a versão 7.2 ** Espero ter ajudado e não ter te confundido mais att Emerson Moretto 2010/10/27 Listas <[email protected]> > > > > Olá Pessoal, > > Sou programador em PHP e utiliso o mysql para fazer meus sistemas, > > bom, estou desenvolvendo um sistema on-line de uma lista telefonica e resolvi > usar o postgresql como banco de dados. > > Porém, estou com dúvidas de como fazer a tabela no banco. > > A tabela va conter de arrancada 260.000 registros > > Vai ser um cadastro normal de usuario, como ( Id, nome, endereço, cep, > cidade, estado, anuncio, etc ) > > Gostaria de saber como criar esta tabela, a estrutura, tipo auto_increment, > ja que esta tabela vai ser imensa e terá que fazer buscas rápidas. > > > Alguem poderia me ajudar ??? > > > > > > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > -- []s Emerson G Moretto [email protected] _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
