2014-11-25 66 views
2

请看下面的代码,更新如何处理唯一值?

Create table #test 
( 
    id int primary key, 
    Name varchar(100) 
) 

insert into #test values (1,'John') 
insert into #test values (2,'Walker') 
insert into #test values (3,'Bob') 
insert into #test values (4,'Tailor') 
insert into #test values (5,'Phlip') 
insert into #test values (6,'Kevin') 

-- Query 1 : 
update #test set name = 'Joney' where id = 1 

-- Query 2 : 
set rowcount 1 
update #test set name = 'Joney' where id = 1 
set rowcount 0 
  1. #TEST表具有主键&聚簇索引。
  2. 很明显,只有一行可用于id。
  3. 在查询1中,即使找到1行,sql server是否会查找匹配的行?
  4. 查询2真的会获得一些性能吗?

在此先感谢

回答

5

在查询1,将SQL服务器查找匹配的行即使它发现1行?
不会。它知道这是一个主键,它将内部查看数据结构,称为B +树,并找出该记录的位置。

查询2真的会获得一些性能吗?
不会。它没有任何区别,但增加了开销。