在特定行

时间:2016-11-10 16:35:39

标签: sql postgresql

postgres table' mytable'有列' a'' b'' c'和' mycol'。

如何有效地拆分表,以便所有条目具有值' x'在' mycol'进入一个表格(' mytableX'),那些有价值的' y'在另一个(' mytableY')和那些有价值的' z' (' mytableZ')在另一个。

可以在纯sql中完成吗?

1 个答案:

答案 0 :(得分:1)

在Postgres中,您可以这样做:

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

你会为每张桌子重复这个。

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

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

如果你真的需要这样的东西,那么观点可能比单独的表更好:

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