按数据类型排序的Oracle列会干扰性能

时间:2016-07-12 17:11:35

标签: oracle oracle10g database-performance

一个求职伙伴说:当我们创建一个表时,字段数据类型的顺序,在oracle数据库中的性能很重要。 示例:如果我有varchar列的第一个和最后列的列,我会遇到性能问题,但在我的搜索中,我没有找到任何关于它的信息。 这是真的吗?

1 个答案:

答案 0 :(得分:1)

列的顺序可能会对性能产生轻微影响,但它与数据类型无关。

列顺序重要的一些示例:

  1. 如果您首先放置更频繁查询的列,那么您将节省Oracle时间逐字段查找已获取的行。 (Oracle从头开始 - 所以如果你查询表中的第一列,它就会找到它并停止。如果查询表中的最后一列,它会查看所有这些列。)
  2. 如果您首先放置更频繁查询的列,如果一行被分成两个块(即链接),您有时会避免第二个I / O.较早的列更可能位于原始块中,后面的列更可能位于链接块中。
  3. 如果将所有通常为NULL的列放在最后,Oracle可以通过不为尾随的NULL列存储占位符来节省一些空间。相反,它可以只写入行尾标记,并假设所有后面的列都是NULL。如果最后放置一个NOT NULL列,Oracle就不能这样做。
  4. 所有人都说......性能影响通常可以忽略不计并且通常由于SQL不良,索引不良,群集错误,不使用绑定变量等导致的性能问题而相形见绌。

    按照对您有意义的顺序将列放在表中。

    如果您以后发现可证明的性能影响(这种情况很少见!),您可以稍后对其进行重组。

    在设计性能时还有一百万个其他注意事项。这不是其中之一。