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

Responder a