1
postgres表'mytable'具有列'a','b','c'和'mycol'。特定行的值后拆分表
如何有效地分割表格,以使'mycol'中值为'x'的所有条目都在一个表格中('mytableX'),而在另一个表格中('mytableY')的值为'y'值'z'('mytableZ')在另一个中。
这可以在纯SQL?
postgres表'mytable'具有列'a','b','c'和'mycol'。特定行的值后拆分表
如何有效地分割表格,以使'mycol'中值为'x'的所有条目都在一个表格中('mytableX'),而在另一个表格中('mytableY')的值为'y'值'z'('mytableZ')在另一个中。
这可以在纯SQL?
在Postgres里,你可以这样做:
create table mytableX as
select * from mytable where mycol = 'X';
你会重复此为每个表。
说了这么多,你为什么想要这样做的原因很少。拆分表不太可能使查询更有效;它增加了表的数量;新表可以从较大的表中过时;等等。
我只能想到一个很好的理由。这将为每个表提供单独的访问控制。即使在这种情况下,也有其他选择,但将数据拆分为单独的表格可以简化安全性。
如果你真的需要这样的事情,看法可能比单独的表更好的方法:
create view mytableX as
select * from mytable where mycol = 'X';
为什么要做到这一点,而不是仅仅使用'where'条款,当你需要它吗? –
一些接口问题,我知道它听起来很愚蠢,但这是我必须提供数据在我的情况下通常的方式。 – Ferenjito
PostgreSQL文档相对于https://www.postgresql.org/docs/9.1/static/ddl-partitioning.html –