我有一个带有标识列Id的表.
当我执行:
select max(Id) from Table
sql Server执行表扫描和流聚合.
我的问题是,为什么它不能简单地查找分配给Id的最后一个值?这是一个身份,所以必须跟踪信息,对吧?
我可以手动查看吗?
解决方法
您可以使用
IDENT_CURRENT查找要插入的最后一个标识值,例如
IDENT_CURRENT('MyTable')
但是,使用此功能时要小心.失败的事务仍然可以递增此值,并且,如Quassnoi所述,此行可能已被删除.
它可能会进行表扫描,因为它无法保证最后一个标识值是MAX值.例如,标识可能不是简单的递增整数.您可以使用递减整数作为您的身份.