2012/8/13 Flavio Henrique Araque Gurgel <[email protected]>

>
> Em 13-08-2012 08:35, jorge sanfelice escreveu:
> > Pessoal,
> >
> > Estou tentando usar uma estrategia de particionamento, porem, nao estou
> > obtendo exito.
> >
> > postgresql 9.1
> >
> > tenho uma tabela que quero particionar em 10 tabelas -> tabela0,
> > tabela1, tabela2,... e tabela9.
> >
> > a ideia é usar um range por "mod"
> >
> > a coluna seria um inteiro com o id do cliente.
> >
> > Criei o check das tabelas filhos assim
> >
> > tabela0
> > "cliente_historico0_
> > clihclioid_check" CHECK ((clihclioid % 10) = 0)
> > tabela1
> > "cliente_historico1_clihclioid_check" CHECK ((clihclioid % 10) = 1)
> > tabela2
> > "cliente_historico2_clihclioid_check" CHECK ((clihclioid % 10) = 2)
> >
> > ....
> >
> > A gravacao esta OK, porem, nao esta surtindo efeito no "SELECT"
>
> O planejador de consultas do PostgreSQL só é capaz de avaliar bem o uso
> de partições usando igualdades simples (= > <). Infelizmente, o uso de
> funções na restrição das tabelas não permite ao planejador otimizar o
> plano de execução.
>
> Como seu particionamento é fixo, faça condições de restrição usando as
> igualdades simples e você terá êxito.
>
>
Outra dica, se você realmente quer particionar pelo MOD, é armazenar o
resultado da operação numa nova coluna (dá pra fazer isso direto na trigger
de insert, que seleciona a partição), e essa coluna pode ser smallint, o
que não ocupará muito espaço.

Att.
--
Matheus de Oliveira
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a