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

Responder a