如何创建表,其中一列包含其他表的名称

时间:2019-08-23 17:56:25

标签: sql postgresql

SQL的新手。我的数据由一个主键表和许多其他数据表组成。注意:不同数据表中的y值根本没有直接相关。

key table as below
key1|key2|dataTableName|
-----------------------
1   |0.1 |     a       |
3   |0.9 |     b       |
0   |0.3 |     c       |
... |... |    ...      |

data table a
X | Y | val
-----------
x1| y1| v1
x2| y2| v2
x3| y3| v3
..|...|...

data table b
X | Y | val
-----------
x1| y1| v1
x2| y2| v2
x3| y3| v3
..|...|...

data table c
X | Y | val
-----------
x1| y1| v1
x2| y2| v2
x3| y3| v3
..|...|...

查询将主要基于键1,键2,然后是所选表的X,Y值。 在数据量方面,密钥表可以包含200行,即200个数据表。每个数据表本身可以包含数百万行。 最简单的操作可能是创建一个包含所有数据的巨型表,并为每行od数据复制key1 key2。但是鉴于上述数据量,我有点担心效率。 任何建议将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

一种拆分数据以便可以有效访问不同数据的方法是使用partitioning

  

分区是指将一张大表从逻辑上拆分为较小的物理块。分区可以带来很多好处:

     
      
  • 在某些情况下,可以显着提高查询性能,尤其是当表中大多数频繁访问的行位于单个分区或少量分区中时。分区替代了索引的前几列,从而减小了索引的大小,并使索引中频繁使用的部分更有可能装入内存。

  •   
  • 当查询或更新访问单个分区的很大一部分时,可以通过对该分区进行顺序扫描而不是使用索引和遍及整个表的随机访问读取来提高性能。

  •