Caro Diego,
Acredito que a melhor maneira seria dividir o campo CNPJ em prefixo e
sufixo. Crie um indice para o prefixo e estaria resolvido seu problema, pois
não utilizaria a pesquisa por substring.
Att.
-----Mensagem original-----
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Em nome de [EMAIL PROTECTED]
Enviada em: domingo, 17 de setembro de 2006 09:00
Para: [email protected]
Assunto: Digest Brasil-Usuarios, volume 294, assunto 1
Enviar submissões para a lista de discussão Brasil-Usuarios para
[email protected]
Para se cadastrar ou descadastrar via WWW, visite o endereço
http://pgfoundry.org/mailman/listinfo/brasil-usuarios
ou, via email, envie uma mensagem com a palavra 'help' no assunto ou corpo da
mensagem para
[EMAIL PROTECTED]
Você poderá entrar em contato com a pessoa que gerencia a lista pelo endereço
[EMAIL PROTECTED]
Quando responder, por favor edite sua linha Assunto assim ela será mais
específica que "Re: Contents of Brasil-Usuarios digest..."
Tópicos de Hoje:
1. Re: Pesquisa por substring (ATF)
2. Re: Pesquisa por substring (Rodrigo Hjort)
----------------------------------------------------------------------
Message: 1
Date: Sat, 16 Sep 2006 15:03:48 +0000
From: ATF <[EMAIL PROTECTED]>
Subject: Re: [PostgreSQL-Brasil] Pesquisa por substring
To: [email protected]
Message-ID: <[EMAIL PROTECTED]>
Content-Type: text/plain; charset="iso-8859-1"
Você pode segmentar essa tabela em, por exemplo, "pessoa-fisica" e
"pessoa-juridica", tendo uma base comum, herdada pelas duas, em outro segmento
("pessoas"). Use o recurso "INHERITS", na definição das tabelas.
Dessa forma você terá acesso independente a cada trecho ou conjuntamente, via
tabela "base".
--
Afonso AC Teixeira de Freitas
LinuxUser#142898
Linux - Bom, seguro e ...barato.
--
Afonso Teixeira de Freitas
--
Afonso AC Teixeira de Freitas
LinuxUser#142898
Linux - Bom, seguro e ...barato.
_______________________________________________________
O Yahoo! está de cara nova. Venha conferir!
http://br.yahoo.com
------------------------------
Message: 2
Date: Sat, 16 Sep 2006 16:37:57 -0300
From: "Rodrigo Hjort" <[EMAIL PROTECTED]>
Subject: Re: [PostgreSQL-Brasil] Pesquisa por substring
To: " Grupo de Usuários do PostgreSQL no Brasil "
<[email protected]>
Message-ID:
<[EMAIL PROTECTED]>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Diego,
Faça o seguinte:
1) crie uma função (em SQL ou PL/pgSQL) que extraia o prefixo do CNPJ
e converta-o para número inteiro
2) crie um índice baseado na função criada, armazenando apenas o
prefixo do CNPJ em formato numérico
3) crie um índice parcial para filtrar somente pessoas jurídicas
4) faça as consultas dessa forma:
SELECT *
FROM empresas
WHERE tipo_pessoa = 'J'
AND funcao(cnpj) = funcao('000000000/001-91');
5) talvez essa query possa ser otimizada caso você execute previamente
o lado direito da expressão no filtro por CNPJ
6) atualize as estatísticas com o ANALYZE
7) execute a consulta e verifique se os índices estão sendo usados -
comando EXPLAIN
--
Rodrigo Hjort
http://icewall.org/~hjort
2006/9/15, Diego Altheman dos Santos <[EMAIL PROTECTED]>:
> Pessoal, Bom dia
>
> Gostaria de saber se existe alguma maneira de otimizar pesquisas por substr.
> tenho seguinte problema.
>
> Preciso procurar por CNPJS rais:
> exemplo : 000000000/001-91,
> Eu considerarias todos os cnpjs na base que contenham os mesmos digitos
> antes da barra
>
> Entaum, c eu fizesse uma somatoria teria q levar em conta os cnpjs:
> 00000000/002-72 00000000/003-53 ,etc...
>
> Com substring eu faco , mas gostaria de saber se existe um meio de
> optimizar...
> OBS: Na mesma tabela eu tenho cpfs tbm o q acaba dificultando um poko..
>
> Se alguem tiver alguma sugestao, agradeco
>
> vlw
------------------------------
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
http://www.postgresql.org.br
http://pgfoundry.org/mailman/listinfo/brasil-usuarios
Fim da Digest Brasil-Usuarios, volume 294, assunto 1
****************************************************
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/
Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios