新聞中心
sql server中的游標(biāo)
使用游標(biāo)(cursor)的一個(gè)主要的原因就是把集合操作轉(zhuǎn)換成單個(gè)記錄處理方式。用SQL語(yǔ)言從數(shù)據(jù)庫(kù)中檢索數(shù)據(jù)后,結(jié)果放在內(nèi)存的一塊區(qū)域中,且結(jié)果往往是一個(gè)含有多個(gè)記錄的集合。游標(biāo)機(jī)制允許用戶在SQL
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了青白江免費(fèi)建站歡迎大家使用!
server內(nèi)逐行地訪問(wèn)這些記錄,按照用戶自己的意愿來(lái)顯示和處理這些記錄。
sqlserver 游標(biāo)用法
如果只是查詢ID=9的記錄這樣就行了
SELECT * FROM 表名 WHERE ID=9
滿意請(qǐng)采納。
SQLserver 大批量更新插入的時(shí)候游標(biāo)怎么優(yōu)化
盡量避免使用游標(biāo),因?yàn)橛螛?biāo)的效率較差,如果游標(biāo)操作的數(shù)據(jù)超過(guò)1萬(wàn)行,那么就應(yīng)該考慮改寫。
使用基于游標(biāo)的方法之前,應(yīng)先尋找基于集的解決方案來(lái)解決問(wèn)題,基于集的方法通常更有效。
最好的改進(jìn)光標(biāo)性能的技術(shù)就是:能避免時(shí)就避免使用游標(biāo)
若有時(shí)無(wú)法避免使用游標(biāo),則可以用如下技巧來(lái)優(yōu)化游標(biāo)的性能。
(1). 除非必要否則不要使用static/insensitive游標(biāo)。打開(kāi)static游標(biāo)會(huì)造成所有的行都被拷貝到臨時(shí)表。這正是為什么它對(duì)變化不敏感的原因——它實(shí)際上是指向臨時(shí)數(shù)據(jù)庫(kù)表中的一個(gè)備份。很自然,結(jié)果集越大,聲明其上的static游標(biāo)就會(huì)引起越多的臨時(shí)數(shù)據(jù)庫(kù)的資源爭(zhēng)奪問(wèn)題。
(2). 除非必要否則不要使用keyset游標(biāo)。和static游標(biāo)一樣,打開(kāi)keyset游標(biāo)會(huì)創(chuàng)建臨時(shí)表。雖然這個(gè)表只包括基本表的一個(gè)關(guān)鍵字列(除非不存在唯一關(guān)鍵字),但是當(dāng)處理大結(jié)果集時(shí)還是會(huì)相當(dāng)大的。
(3). 當(dāng)處理單向的只讀結(jié)果集時(shí),使用fast_forward代替forward_only。使用fast_forward定義一個(gè)forward_only,則read_only游標(biāo)具有一定的內(nèi)部性能優(yōu)化。
(4). 使用read_only關(guān)鍵字定義只讀游標(biāo)。這樣可以防止意外的修改,并且讓服務(wù)器了解游標(biāo)移動(dòng)時(shí)不會(huì)修改行。
(5). 小心事務(wù)處理中通過(guò)游標(biāo)進(jìn)行的大量行修改。根據(jù)事務(wù)隔離級(jí)別,這些行在事務(wù)完成或回滾前會(huì)保持鎖定,這可能造成服務(wù)器上的資源爭(zhēng)奪。
(6). 小心動(dòng)態(tài)光標(biāo)的修改,尤其是建在非唯一聚集索引鍵的表上的游標(biāo),因?yàn)樗麄儠?huì)造成“Halloween”問(wèn)題——對(duì)同一行或同一行的重復(fù)的錯(cuò)誤的修改。因?yàn)镾QL Server在內(nèi)部會(huì)把某行的關(guān)鍵字修改成一個(gè)已經(jīng)存在的值,并強(qiáng)迫服務(wù)器追加下標(biāo),使它以后可以再結(jié)果集中移動(dòng)。當(dāng)從結(jié)果集的剩余項(xiàng)中存取時(shí),又會(huì)遇到那一行,然后程序會(huì)重復(fù),結(jié)果造成死循環(huán)。
(7). 對(duì)于大結(jié)果集要考慮使用異步游標(biāo),盡可能地把控制權(quán)交給調(diào)用者。當(dāng)返回相當(dāng)大的結(jié)果集到可移動(dòng)的表格時(shí),異步游標(biāo)特別有用,因?yàn)樗鼈冊(cè)试S應(yīng)用程序幾乎馬上就可以顯示行
文章標(biāo)題:sqlserver游標(biāo),sqlserver游標(biāo)嵌套
文章分享:http://www.dlmjj.cn/article/phecho.html