2016-11-10 37 views
1

postgres表'mytable'具有列'a','b','c'和'mycol'。特定行的值后拆分表

如何有效地分割表格,以使'mycol'中值为'x'的所有条目都在一个表格中('mytableX'),而在另一个表格中('mytableY')的值为'y'值'z'('mytableZ')在另一个中。

这可以在纯SQL?

+1

为什么要做到这一点,而不是仅仅使用'where'条款,当你需要它吗? –

+0

一些接口问题,我知道它听起来很愚蠢,但这是我必须提供数据在我的情况下通常的方式。 – Ferenjito

+1

PostgreSQL文档相对于https://www.postgresql.org/docs/9.1/static/ddl-partitioning.html –

回答

1

在Postgres里,你可以这样做:

create table mytableX as 
    select * from mytable where mycol = 'X'; 

你会重复此为每个表。

说了这么多,你为什么想要这样做的原因很少。拆分表不太可能使查询更有效;它增加了表的数量;新表可以从较大的表中过时;等等。

我只能想到一个很好的理由。这将为每个表提供单独的访问控制。即使在这种情况下,也有其他选择,但将数据拆分为单独的表格可以简化安全性。

如果你真的需要这样的事情,看法可能比单独的表更好的方法:

create view mytableX as 
    select * from mytable where mycol = 'X';