SQL Server 中序列与标识的深入解析与性能对比
在 SQL Server 中,生成代理键有两种主要的内置工具:标识列属性和序列对象。标识列属性是大家较为熟悉的方法,而序列对象则是 SQL Server 2012 引入的新特性。下面将详细介绍序列对象,并与标识列属性进行对比。
标识列属性的特点与局限性
标识列属性存在诸多局限性,具体如下:
1. 非独立对象 :它是表中列的属性,在列定义时指定,并非数据库中的独立对象。这在需要为多个表生成代理键时会带来问题,例如自定义表分区解决方案。
2. 关联限制 :不能将标识属性与现有列关联或解除关联,必须在创建表或添加新列时定义,可能导致表的停机时间增加。
3. 不可用于可空列 :标识属性不能用于可空列。
4. 无法预先生成键 :有时需要在使用前生成代理键,但标识属性不支持此功能,必须先插入新行,再使用 SCOPE_IDENTITY 函数获取新生成的键。
5. 查询限制 :不能在常规 SELECT 查询中使用标识属性生成新键。在 SELECT INTO 语句中使用 IDENTITY 函数生成具有标识属性的列时,无法保证标识值按特定顺序生成,即使查询有 ORDER BY 子句。若需要按特定顺序生成键,可使用带有 ORDER BY 子句的
SQL Server序列与标识性能对比
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



