加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 在没有表扫描的情况下获取标识列的最大值

发布时间:2020-12-12 06:36:51 所属栏目:MsSql教程 来源:网络整理
导读:我有一个带有标识列Id的表. 当我执行: select max(Id) from Table SQL Server执行表扫描和流聚合. 我的问题是,为什么它不能简单地查找分配给Id的最后一个值?这是一个身份,所以必须跟踪信息,对吧? 我可以手动查看吗? 解决方法 您可以使用 IDENT_CURRENT查
我有一个带有标识列Id的表.

当我执行:

select max(Id) from Table

SQL Server执行表扫描和流聚合.

我的问题是,为什么它不能简单地查找分配给Id的最后一个值?这是一个身份,所以必须跟踪信息,对吧?

我可以手动查看吗?

解决方法

您可以使用 IDENT_CURRENT查找要插入的最后一个标识值,例如
IDENT_CURRENT('MyTable')

但是,使用此功能时要小心.失败的事务仍然可以递增此值,并且,如Quassnoi所述,此行可能已被删除.

它可能会进行表扫描,因为它无法保证最后一个标识值是MAX值.例如,标识可能不是简单的递增整数.您可以使用递减整数作为您的身份.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读