而update的過程會自動加鎖,這個給我們帶來和極大便利,但該方法一直不被人們認可的原因是效率:比如打標記怎麼打,是否需要每個終端給資料印上各自不同的標誌才能避免衝突;是否需要巢狀查詢等等..
為了充分提高併發效率,我們可以使用rowlock和readpast來降低鎖爭,使用top子句來直接更新當前任務執行者需要的資料,使用output子句直接輸出結果來代替巢狀查詢。必要的情況下可以在表中加適當的索引。
我們來看一下具體**
setnocount
onuse
tempdb
goif (
object_id (
'tb' )
isnot
null )
drop
table
tbgo
create
table
tb (
idint
identity ( 1,
1),name
varchar (
10),
tagint
default
0 )
insert
into
tb (
name )
select
'a'insert
into
tb (
name )
select
'b'insert
into
tb (
name )
select
'c'insert
into
tb (
name )
select
'd'insert
into
tb (
name )
select
'e'go
update
top (
2 )
tbwith (
rowlock
,readpast )
settag=
1output
inserted.id
,inserted
.name
where
tag=0go
update
top (
2 )
tbwith (
rowlock
,readpast )
settag=
1output
inserted.id
,inserted
.name
where
tag=0go
update
top (
2 )
tbwith (
rowlock
,readpast )
settag=
1output
inserted.id
,inserted
.name
where
tag=0go
setnocount
off/*
id name
----------- ----------
1 a2 b
id name
----------- ----------
3 c4 d
id name
----------- ----------
5 e*/
SQL Server2005複製實現
一 準備工作 1 在發布伺服器上建立乙個共享目錄,作為發布快照檔案的存放目錄。例如 在d 盤根目錄下建資料夾名為pub 2 設定sql 發布伺服器和訂閱伺服器均設定 步驟 開啟服務 控制面板 管理工具 服務 右擊sqlserver agent 屬性 登入 選擇 此帳戶 輸入或選擇第一步中建立的win...
SQL Server 2005完全解除安裝
sql server 2005的解除安裝是乙個非常頭疼的問題。我曾經嘗試過直接使用 新增或刪除程式 工具解除安裝 清除安裝目錄 刪除登錄檔內容等等各種方式綜合解除安裝,勉強成功。現在終於找到了乙個事半功倍的方法,多次嘗試,未有失敗,具體如下 第一種是微軟官方提供的工具 msicuu2.exe 微軟官...
SQLSERVER 2005 遞迴查詢
專案中有使用者組表usergroup如下 其中pid表示當前組的上級組 表資料如下 現在想查詢出頂級組 沒有上級組叫頂級組 a1組的所有子孫組id,sql如下 查詢子節點 with rtd1 as select id pid from usergroup rtd2 as select from rt...