database - 哪个性能更好 - 将一个表分成两个或增加列数 - Oracle

标签 database oracle database-design database-performance

假设有一个 Oracal 表可能有 200 列和 2000K 行。假设我必须向表中添加一个新列。由于列数偏高(即使最大列数是 1000,我认为 200 是偏高)我可以创建一个包含主键列和我的新列的新表,或者我可以将新列添加到现有的 table 。哪个性能更好。这将是整体更好的设计。如果您能详细说明并引导我获取更多信息,那就更好了。提前致谢。

最佳答案

对于哪种设计会给您带来更好的性能或更普遍的更好结果这一问题,没有一个单一的答案。这在很大程度上取决于您如何使用数据。除了简单的列数和行数之外,您还需要查看数据的其他方面。是否所有列都与表的主键密切相关?如果不是,您可能需要仔细执行规范化过程,以便将表分解为多个符合更高范式的表。

您是否熟悉各种范式,以及偏离这些范式的后果?专业设计人员有时会忽视规范化规则,但他们知道自己在做什么,并且知道不规范化的缺点。

表中表示的实体(对象)是否都属于同一类型,或者该类型是否可以拆分为若干子类型(子类)?如果是这样,将表分解为每个类的一个表可能是有意义的。请参阅以下链接:

http://martinfowler.com/eaaCatalog/classTableInheritance.html

最后,也是最重要的一点,您可能在表格设计中追求不止一个目标。除了速度之外,还有灵 active 和适应性、易学性、易用性和编程性以及数据内部矛盾的自由。您必须平衡这些目标,才能回答您的表格应该如何组成的问题。

关于database - 哪个性能更好 - 将一个表分成两个或增加列数 - Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28086690/

相关文章:

java - 启动 Weblogic Managed Server 时出现异常

查找行的 SQL 查询

sql - Oracle 默认时间戳格式

mysql - 与关系数据库相比,为什么时间序列数据库在它们所做的事情上是最佳的

database-design - 用于标记多种类型实体的数据库设计

python - 检索 ZODB 数据库结构

php - 无法根据 PHP 和 MySQL 中的另一个表(关系数据库)从表中选择所有结果

database - 何时存储预先计算的值与在检索它们时计算它们?

mysql - 我如何知道 mysql 表是否已更新?

用于编程面试的 Java 数据访问