Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按数据类型列出的Oracle订单列会影响性能_Oracle_Oracle10g_Database Performance - Fatal编程技术网

按数据类型列出的Oracle订单列会影响性能

按数据类型列出的Oracle订单列会影响性能,oracle,oracle10g,database-performance,Oracle,Oracle10g,Database Performance,一位工作伙伴说:当我们创建表时,oracle数据库中字段数据类型的顺序对性能很重要。 示例:如果我首先使用varchar列,最后使用date列,则会出现性能问题,但在搜索中,我没有找到任何相关内容。 这是真的吗?列的顺序对性能有轻微影响,但与数据类型无关 列顺序重要的位置的一些示例: 如果将查询频率更高的列放在第一位,则可以节省Oracle逐个字段查看获取的行的时间。(Oracle从开头开始——因此,如果查询表中的第一列,它会找到它并停止。如果查询表中的最后一列,它会查找所有列) 如果将查询频率

一位工作伙伴说:当我们创建表时,oracle数据库中字段数据类型的顺序对性能很重要。 示例:如果我首先使用varchar列,最后使用date列,则会出现性能问题,但在搜索中,我没有找到任何相关内容。
这是真的吗?

列的顺序对性能有轻微影响,但与数据类型无关

列顺序重要的位置的一些示例:

  • 如果将查询频率更高的列放在第一位,则可以节省Oracle逐个字段查看获取的行的时间。(Oracle从开头开始——因此,如果查询表中的第一列,它会找到它并停止。如果查询表中的最后一列,它会查找所有列)
  • 如果将查询频率更高的列放在第一位,那么如果将一行拆分为两个块(即链接),有时会避免第二次I/O。较早的列更有可能位于原始块中,较晚的列更有可能位于链接块中
  • 如果将所有通常为空的列放在最后,Oracle可以通过不为后面的空列存储占位符来节省一些空间。相反,它可以只写行尾标记,并假设后面的所有列都为空。如果最后放置一个NOTNULL列,Oracle将无法执行此操作
  • 都说了。。。性能影响通常可以忽略不计,通常与糟糕的SQL、糟糕的索引、糟糕的集群、不使用绑定变量等导致的性能问题相形见绌

    将列按其对您有意义的顺序放入表中

    如果您以后发现明显的性能影响(这将是罕见的!),您可以稍后对其进行重组


    在为性能而设计时,还有无数其他考虑因素。这不是其中之一。

    你可以问问你的工作伙伴他从哪里得到信息吗?如果没有一个完整的例子,很难确切地知道建议是什么。由于表的前导列通常是键,并且大多数排序都是按键进行的,因此将这些列作为前导列是有意义的。如果我们讨论的是一个索引组织的表,或者有人提出要增加一个日期单调递增的表中行的物理顺序,那么可能还有其他考虑因素。你的工作伙伴如何支持他的主张?他在什么地方读过吗?他有没有一个例子来证明这一点?还是他有逻辑论证来证明这一点?