【问题标题】:Create a generic DB table创建通用数据库表
【发布时间】:2018-05-23 16:07:56
【问题描述】:

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

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

【问题讨论】:

  • 值表是什么意思。你能分享一下你现有的和提议的桌子设计吗
  • 一个产品可以有多个值,..所以它是产品和值表中的父子关系。

标签: oracle optimization database-design data-modeling


【解决方案1】:

“百万记录”听起来像是 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 2012-10-09
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多