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"

EX:
 desenvolvimento=# EXPLAIN SELECT * from cliente_historico where
clihclioid=61312 ;
                                                       QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------
 Result  (cost=0.00..162.61 rows=30 width=96)
   ->  Append  (cost=0.00..162.61 rows=30 width=96)
         ->  Index Scan using cliente_historico_clihclioid_idx on
cliente_historico  (cost=0.00..11.09 rows=2 width=141)
               Index Cond: (clihclioid = 61312)
         ->  Bitmap Heap Scan on cliente_historico0 cliente_historico
(cost=4.27..11.38 rows=3 width=93)
               Recheck Cond: (clihclioid = 61312)
               ->  Bitmap Index Scan on cliente_historico0_clihclioid_idx
(cost=0.00..4.27 rows=3 width=0)
                     Index Cond: (clihclioid = 61312)
         ->  Bitmap Heap Scan on cliente_historico1 cliente_historico
(cost=4.27..11.38 rows=3 width=93)
               Recheck Cond: (clihclioid = 61312)
               ->  Bitmap Index Scan on cliente_historico1_clihclioid_idx
(cost=0.00..4.27 rows=3 width=0)
                     Index Cond: (clihclioid = 61312)
         ->  Seq Scan on cliente_historico2 cliente_historico
(cost=0.00..1.01 rows=1 width=94)
               Filter: (clihclioid = 61312)
         ->  Seq Scan on cliente_historico3 cliente_historico
(cost=0.00..18.25 rows=3 width=93)
               Filter: (clihclioid = 61312)
         ->  Seq Scan on cliente_historico4 cliente_historico
(cost=0.00..18.25 rows=3 width=93)
               Filter: (clihclioid = 61312)
         ->  Seq Scan on cliente_historico5 cliente_historico
(cost=0.00..18.25 rows=3 width=93)
               Filter: (clihclioid = 61312)
         ->  Seq Scan on cliente_historico6 cliente_historico
(cost=0.00..18.25 rows=3 width=93)
               Filter: (clihclioid = 61312)
         ->  Seq Scan on cliente_historico7 cliente_historico
(cost=0.00..18.25 rows=3 width=93)
               Filter: (clihclioid = 61312)
         ->  Seq Scan on cliente_historico8 cliente_historico
(cost=0.00..18.25 rows=3 width=93)
               Filter: (clihclioid = 61312)
         ->  Seq Scan on cliente_historico9 cliente_historico
(cost=0.00..18.25 rows=3 width=93)
               Filter: (clihclioid = 6131

Esta me parecendo que isso na da certo para esse tipo de criterio, alguem
poderia me ajudar?
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Reply via email to