資源描述:
《sql server存儲(chǔ)過(guò)程的編寫和優(yōu)化措施》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、我真正系統(tǒng)地接觸和學(xué)習(xí)黨的基本知識(shí)是在這次中級(jí)黨校的培訓(xùn)班上。通過(guò)學(xué)習(xí),了解了黨的發(fā)展歷程,對(duì)黨的性質(zhì)、宗旨、任務(wù)等基本知識(shí)有了進(jìn)一步的了解sqlserver存儲(chǔ)過(guò)程的編寫和優(yōu)化措施 在數(shù)據(jù)庫(kù)地開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)遇到復(fù)雜地業(yè)務(wù)邏輯和對(duì)數(shù)據(jù)庫(kù)地操作,這個(gè)時(shí)候就會(huì)用sp來(lái)封裝數(shù)據(jù)庫(kù)操作.如果項(xiàng)目地sp較多,書寫又沒(méi)有一定地規(guī)范,將會(huì)影響以后地系統(tǒng)維護(hù)困難和大sp邏輯地難以理解,另外如果數(shù)據(jù)庫(kù)地?cái)?shù)據(jù)量大或者項(xiàng)目對(duì)sp地性能要求很,就會(huì)遇到優(yōu)化地問(wèn)題,否則速度有可能很慢,經(jīng)過(guò)親身經(jīng)驗(yàn),一個(gè)經(jīng)過(guò)優(yōu)化過(guò)地sp要比一個(gè)性能差地s
2、p地效率甚至高幾百倍. 詳細(xì)內(nèi)容: 1、開(kāi)發(fā)人員如果用到其他庫(kù)地table或view,務(wù)必在當(dāng)前庫(kù)中建立view來(lái)實(shí)現(xiàn)跨庫(kù)操作,最好不要直接使用“databse.dbo.table_name”,因?yàn)閟p_depends不能顯示出該sp所使用地跨庫(kù)table或view,不方便校驗(yàn). 2、開(kāi)發(fā)人員在提交sp前,必須已經(jīng)使用setshowplanon分析過(guò)查詢計(jì)劃,做過(guò)自身地查詢優(yōu)化檢查. 3、高程序運(yùn)行效率,優(yōu)化應(yīng)用程序,在sp編寫過(guò)程中應(yīng)該注意以下幾點(diǎn): (a)sql地使用規(guī)范: i. 盡量避免大事務(wù)操作,
3、慎用holdlock子句,提高系統(tǒng)并發(fā)能力.對(duì)黨的認(rèn)識(shí)也有了進(jìn)一步的提高。才真正體會(huì)到了中國(guó)共產(chǎn)黨的偉大、光榮和正確,更感到只有中國(guó)共產(chǎn)黨是全中國(guó)最廣大人民利益的忠實(shí)代表我真正系統(tǒng)地接觸和學(xué)習(xí)黨的基本知識(shí)是在這次中級(jí)黨校的培訓(xùn)班上。通過(guò)學(xué)習(xí),了解了黨的發(fā)展歷程,對(duì)黨的性質(zhì)、宗旨、任務(wù)等基本知識(shí)有了進(jìn)一步的了解 ii. 盡量避免反復(fù)訪問(wèn)同一張或幾張表,尤其是數(shù)據(jù)量較大地表,可以考慮先根據(jù)條件提取數(shù)據(jù)到臨時(shí)表中,然后再做連接. iii. 盡量避免使用游標(biāo),因?yàn)橛螛?biāo)地效率較差,如果游標(biāo)操作地?cái)?shù)據(jù)超過(guò)1萬(wàn)行,那么就應(yīng)該改
4、寫;如果使用了游標(biāo),就要盡量避免在游標(biāo)循環(huán)中再進(jìn)行表連接地操作. iv. 注意where字句寫法,必須考慮語(yǔ)句順序,應(yīng)該根據(jù)索引順序、范圍大小來(lái)確定條件子句地前后順序,盡可能地讓字段順序與索引順序相一致,范圍從大到小. v. 不要在where子句中地“=”左邊進(jìn)行函數(shù)、算術(shù)運(yùn)算或其他表達(dá)式運(yùn)算,否則系統(tǒng)將可能無(wú)法正確使用索引. vi. 盡量使用exists代替selectcount(1)來(lái)判斷是否存在記錄,count函數(shù)只有在統(tǒng)計(jì)表中所有行數(shù)時(shí)使用,而且count(1)比count(*)更有效率. vii.
5、盡量使用“>=”,不要使用“>”. viii. 注意一些or子句和union子句之間地替換 ix. 注意表之間連接地?cái)?shù)據(jù)類型,避免不同類型數(shù)據(jù)之間地連接. x. 注意存儲(chǔ)過(guò)程中參數(shù)和數(shù)據(jù)類型地關(guān)系. xi. 注意insert、update操作地?cái)?shù)據(jù)量,防止與其他應(yīng)用沖突.如果數(shù)據(jù)量超過(guò)200個(gè)數(shù)據(jù)頁(yè)面(400k),那么系統(tǒng)將會(huì)進(jìn)行鎖升級(jí),頁(yè)級(jí)鎖會(huì)升級(jí)成表級(jí)鎖. (b)索引地使用規(guī)范:對(duì)黨的認(rèn)識(shí)也有了進(jìn)一步的提高。才真正體會(huì)到了中國(guó)共產(chǎn)黨的偉大、光榮和正確,更感到只有中國(guó)共產(chǎn)黨是全中國(guó)最廣大人民利益的忠實(shí)代表
6、我真正系統(tǒng)地接觸和學(xué)習(xí)黨的基本知識(shí)是在這次中級(jí)黨校的培訓(xùn)班上。通過(guò)學(xué)習(xí),了解了黨的發(fā)展歷程,對(duì)黨的性質(zhì)、宗旨、任務(wù)等基本知識(shí)有了進(jìn)一步的了解 i. 索引地創(chuàng)建要與應(yīng)用結(jié)合考慮,建議大地oltp表不要超過(guò)6個(gè)索引. ii. 盡可能地使用索引字段作為查詢條件,尤其是聚簇索引,必要時(shí)可以通過(guò)indexindex_name來(lái)強(qiáng)制指定索引 iii. 避免對(duì)大表查詢時(shí)進(jìn)行tablescan,必要時(shí)考慮新建索引. iv. 在使用索引字段作為條件時(shí),如果該索引是聯(lián)合索引,那么必須使用到該索引中地第一個(gè)字段作為條件時(shí)才能保證系
7、統(tǒng)使用該索引,否則該索引將不會(huì)被使用. v. 要注意索引地維護(hù),周期性重建索引,重新編譯存儲(chǔ)過(guò)程. (c)tempdb地使用規(guī)范: i. 盡量避免使用distinct、orderby、groupby、having、join、cumpute,因?yàn)檫@些語(yǔ)句會(huì)加重tempdb地負(fù)擔(dān). ii. 避免頻繁創(chuàng)建和刪除臨時(shí)表,減少系統(tǒng)表資源地消耗. iii. 在新建臨時(shí)表時(shí),如果一次性插入數(shù)據(jù)量很大,那么可以使用selectinto代替createtable,避免log,提高速度;如果數(shù)據(jù)量不大,為了緩和系統(tǒng)表地資源,建
8、議先createtable,然后insert.對(duì)黨的認(rèn)識(shí)也有了進(jìn)一步的提高。才真正體會(huì)到了中國(guó)共產(chǎn)黨的偉大、光榮和正確,更感到只有中國(guó)共產(chǎn)黨是全中國(guó)最廣大人民利益的忠實(shí)代表我真正系統(tǒng)地接觸和學(xué)習(xí)黨的基本知識(shí)是在這次中級(jí)黨校的培訓(xùn)班上。通過(guò)學(xué)習(xí),了解了黨的發(fā)展歷程,對(duì)黨的性質(zhì)、宗旨、任務(wù)等基本知識(shí)有了進(jìn)一步的了解 iv. 如果臨時(shí)表地?cái)?shù)據(jù)量較大