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
