2014-11-25 38 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真的會獲得一些性能嗎?
不會。它沒有任何區別,但增加了開銷。