Oracle 按数据类型对列进行排序会影响性能
Oracle order columns by data type interferes in performace
一位工作伙伴说:当我们创建一个table时,字段数据类型的顺序在oracle数据库中对性能很重要。
示例:如果我首先有 varchar 列,最后有日期列,我会遇到性能问题,但在我的搜索中我没有找到任何相关信息。
是真的吗?
列的顺序对性能有轻微的影响,但与数据类型无关。
列顺序重要的一些示例:
- 如果您将更频繁查询的列放在前面,您将节省 Oracle 逐字段查看获取的行的时间。 (Oracle 从头开始——因此,如果您查询 table 中的第一列,它会找到并停止。如果您查询 table 中的最后一列,它会查看所有这些列) .
- 如果您将更频繁查询的列放在第一位,有时您会避免第二个 I/O 如果一行被分成两个块(即链接)。较早的列更有可能在原始块中,较晚的列更有可能在链接块中。
- 如果将所有通常为 NULL 的列放在最后,Oracle 可以通过不存储尾随 NULL 列的占位符来节省一些 space。相反,它可以只写行尾标记,并假定所有后面的列都是 NULL。如果您在最后放置一个 NOT NULL 列,Oracle 将无法做到这一点。
综上所述...性能影响通常 可以忽略不计 并且通常与 SQL 差、索引差、集群差、不使用造成的性能问题相比相形见绌绑定变量等
按照对您有意义的顺序将您的专栏放在 table 中。
如果您以后发现明显的性能影响(这种情况很少见!),您可以稍后对其进行重组。
在设计性能时还有一百万个其他注意事项。这不是其中之一。
一位工作伙伴说:当我们创建一个table时,字段数据类型的顺序在oracle数据库中对性能很重要。 示例:如果我首先有 varchar 列,最后有日期列,我会遇到性能问题,但在我的搜索中我没有找到任何相关信息。 是真的吗?
列的顺序对性能有轻微的影响,但与数据类型无关。
列顺序重要的一些示例:
- 如果您将更频繁查询的列放在前面,您将节省 Oracle 逐字段查看获取的行的时间。 (Oracle 从头开始——因此,如果您查询 table 中的第一列,它会找到并停止。如果您查询 table 中的最后一列,它会查看所有这些列) .
- 如果您将更频繁查询的列放在第一位,有时您会避免第二个 I/O 如果一行被分成两个块(即链接)。较早的列更有可能在原始块中,较晚的列更有可能在链接块中。
- 如果将所有通常为 NULL 的列放在最后,Oracle 可以通过不存储尾随 NULL 列的占位符来节省一些 space。相反,它可以只写行尾标记,并假定所有后面的列都是 NULL。如果您在最后放置一个 NOT NULL 列,Oracle 将无法做到这一点。
综上所述...性能影响通常 可以忽略不计 并且通常与 SQL 差、索引差、集群差、不使用造成的性能问题相比相形见绌绑定变量等
按照对您有意义的顺序将您的专栏放在 table 中。
如果您以后发现明显的性能影响(这种情况很少见!),您可以稍后对其进行重组。
在设计性能时还有一百万个其他注意事项。这不是其中之一。