序列和列:新的序列和列在默认情况下使用 NOORDER¶
当您 创建新序列 或者新的自动递增列时,您可以指定 ORDER 或 NOORDER 参数来指示序列是否可以按递增顺序生成新值。
ORDER 指定了为序列或自动递增列生成的值按升序排列(如果间隔为负值,则按降序排列)。
例如,如果序列或自动递增的列具有 START 1 INCREMENT 2,生成的值可能是
1
、3
、5
、7
、9
等。NOORDER 指定不保证值按递增顺序排列。
例如,如果序列中有 START 1 INCREMENT 2,生成的值可能是
1
、3
、101
、5
、103
等。NOORDER 可以在需要同时执行多个插入操作时提高性能(例如,在多个客户端执行多个 INSERT 语句时)。
如果不指定 ORDER 或 NOORDER,则使用默认值。为了提高性能,此默认值即将发生变化:
- 变更前:
如果在未指定 ORDER 或 NOORDER 的情况下创建新序列,则默认使用 ORDER。
如果创建新的表列并指定 AUTOINCREMENT,但未指定 ORDER 或 NOORDER,则默认使用 ORDER。
- 变更后:
如果在未指定 ORDER 或 NOORDER 的情况下创建新序列,则默认使用 NOORDER。
如果创建新的表列并指定 AUTOINCREMENT,但未指定 ORDER 或 NOORDER,则默认使用 NOORDER。
请注意以下事项:
对这些默认值的更改不会影响现有序列和现有的自动递增列。
这些更改仅影响在启用行为变更时创建的新序列和列。
ORDER 和 NOORDER 属性对序列和自动递增列的生成值的唯一性没有影响。
将默认值从 NOORDER 更改为 ORDER¶
要将默认值设置回 ORDER,请将账户、用户或会话的 NOORDER_SEQUENCE_AS_DEFAULT 参数设置为 FALSE。
如果设置此参数,则您设置的值将替换 2024_01 行为变更捆绑包中的值。将此参数设置为 FALSE 会保留 ORDER 作为默认值,即使在 通常启用 2024_01 行为变更捆绑包之后也是如此。
GET_DDL 函数输出的变更¶
此外,GET_DDL 函数针对具有 START 1 INCREMENT 1 集的自动递增列进的输出即将发生变化:
- 变更前:
GET_DDL 返回的列定义仅包括 AUTOINCREMENT 关键字(例如,
column name data type AUTOINCREMENT
)。- 变更后:
GET_DDL 返回的列定义包含所有属性,其中包括 START 属性、INCREMENT 属性和 ORDER/NOORDER 属性(例如,
column name data type AUTOINCREMENT START 1 INCREMENT 1 NOORDER
)。
确定序列或列是否具有 ORDER 或 NOORDER 属性¶
最后,要确定序列是否具有 ORDER 或 NOORDER 属性,您可以使用以下命令和视图:
对于序列,您可以使用以下任何选项:
对于自动递增列,您可以检查以下任一选项:
SHOW COLUMNS 命令输出中的
autoincrement
列。INFORMATION_SCHEMA 中的 COLUMNS 视图的 ``identity_ordered` 列 </sql-reference/info-schema/columns>`。
对于序列和自动递增列,您可以检查 GET_DDL 函数返回的序列或列定义中的 ORDER 或 NOORDER 属性。
参考:1483