我有一个表,说scope_test如下:来自表的范围标识()和范围标识()之间的性能差异?
create table scope_test
(
id int identity(1,1),
val varchar(100)
)
现在,当我在这个表中插入一行,并通过2个不同的SQL语句选择范围身份,我能看到在2条语句的性能差异:
insert into scope_test values('abcd')
select scope_identity() -- statement 1
select scope_identity() from scope_test -- statement 2
语句1根据执行计划比语句2快:
我很好奇: 1.为什么这是性能差异,和 2.使用范围标识()作为语句1中使用的安全性,即没有表名称?
您应该只使用语句1.使用'from'子句查询'scope_identity'是没有意义的。 –
也许您正在查找或考虑['IDENT_CURRENT'](http://msdn.microsoft.com/zh-cn/library/ms175098.aspx)?当然,在具有任何并发性的系统中,这是一个毫无意义的功能。 –
谢谢@Damien_The_Unbeliever – Seasoned