创建一个通用数据库表

时间:2018-05-23 06:41:18

标签: oracle optimization database-design data-modeling

我有多个产品,每个产品都有自己的产品表和价值表。现在我必须创建一个通用屏幕来验证这些产品,我不想为每个产品创建经过验证的表。我想创建一个通用表,它将包含所有Products详细信息和一个名为ProductIdentifier的额外列。但问题是,在这个通用表中,我可能最终会输出数百万条记录,而在获取数据时需要时间。

还有其他更好的解决方案???

1 个答案:

答案 0 :(得分:0)

“数百万条记录”听起来像是一个VLDB问题。我将数据放入分区表中:

CREATE TABLE myproducts (
  productIdentifier NUMBER, 
  value1            VARCHAR2(30),
  value2            DATE
) PARTITION BY LIST (productIdentifier)  
( PARTITION p1 VALUES (1),
  PARTITION p2 VALUES (2),
  PARTITION p5to9 VALUES (5,6,7,8,9)
);

对于仅处理一种产品的查询,请指定分区:

SELECT * FROM myproducts PARTITION FOR (9);

对于您的常规报告,只需省略分区即可获得所有数字:

SELECT * FROM myproducts;

文档在这里: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/vldbg/toc.htm