SQLSERVER數(shù)據(jù)庫開發(fā)規(guī)范_第1頁
SQLSERVER數(shù)據(jù)庫開發(fā)規(guī)范_第2頁
SQLSERVER數(shù)據(jù)庫開發(fā)規(guī)范_第3頁
SQLSERVER數(shù)據(jù)庫開發(fā)規(guī)范_第4頁
SQLSERVER數(shù)據(jù)庫開發(fā)規(guī)范_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

姓名:張劍工作經(jīng)驗:2005—2008廣州衡緯科技有限公司軟件開發(fā)2008—2013香港新科集團專職DBA2013—2014建設(shè)銀行廣州研發(fā)中心專職DBA2014—2015深圳迏飛金融集團運維經(jīng)理(負責IT整體架構(gòu)設(shè)計,包括數(shù)據(jù)庫、網(wǎng)絡服務器、思科電話系統(tǒng)、呼叫中心、機房建設(shè)、桌面支持等)聯(lián)系方式:手機Q:63890516Email:dba_zhang@163.com個人履歷SQLSERVER數(shù)據(jù)庫開發(fā)規(guī)范主題內(nèi)容一.物件命名規(guī)則

二.書寫規(guī)范

五.注意事項

四.查詢優(yōu)化三.多表連接規(guī)范

物件命名規(guī)則一.公共表、系統(tǒng)模塊表命名:

模塊代碼(首字母大字)+’_’+具體名稱(每個單詞首字母大字)二.子系統(tǒng)表命名:

子系統(tǒng)代碼(所有字母大字)+’_’+模塊代碼(首字母大字)+’_’+具體名稱(每個單詞首字母大字)例:Pub_AreaSys_BillType

(PubSys為公共或系統(tǒng)模塊專有代碼)例:FIFA_Bas_AssetClass物件命名規(guī)則三.視圖、存儲過程,函數(shù)命名則在表名的命名規(guī)則前加兩個小寫字母,vw代表視圖、sp代表存儲過程、fn代表函數(shù)例:spSys_GetCustomerId書寫規(guī)范一.存儲與函數(shù)需要在代碼段前注釋二.存儲與函數(shù)的參數(shù)定義后要跟注釋三.存儲過程代碼中復雜邏輯處用獨立單行注釋四.關(guān)鍵字采用首字母大寫,其它小寫六.以空格縮進來標示程式碼語義銜接和層級區(qū)分書寫規(guī)范五.一行字符不要超過120個為宜(包括空格符)書寫規(guī)范書寫規(guī)范Select*FromProduction.Location

SelectLocationID,Name,CostRate,Availability,ModifiedDateFromProduction.Location

七.查詢或插入的表名后要標示出字段名InsertIntoProduction.LocationValues(40,'Paint',15,120,'2007-06-01')InsertIntoProduction.Location(LocationID,Name,CostRate

,Availability,ModifiedDate)Values(40,'Paint',15,120,'2007-06-01')

×√×√多表連接規(guī)范一.SQL語句包含多表連接時,關(guān)聯(lián)表用JOIN的方式連接,且用別名替代。SelectProduction.Product.Name,Production.Location.Name,

Production.ProductInventory.QuantityFromProduction.ProductInventory,Production.Product,Production.LocationWhereProduction.ProductInventory.ProductID

=

Production.Product.ProductIDAndProduction.ProductInventory.LocationID

=Production.Location.LocationID

×Selectb.Name,c.Name,a.QuantityFromProduction.ProductInventorya

InnerJoinProduction.ProductbOna.ProductID

=

b.ProductID

InnerJoinProduction.LocationcOna.LocationID

=

c.LocationID

√多表連接規(guī)范二.對于能用連接方式或者視圖方式實現(xiàn)的功能,不要用子查詢SelectnameFromcustomerWherecustomer_idIn(Selectcustomer_idFromorderWheremoney>1000)

×SelectnameFromcustomeraInnerJoinorderbOna.customer_id=b.customer_idWhereb.money>100√多表連接規(guī)范三.在一個非常復雜的條件關(guān)聯(lián)查詢語句里,如果存在條件or的可以考慮替換成unionall子句

范例:多表連接規(guī)范替換后:查詢優(yōu)化一.多用索引字段作為查詢條件,尤其是聚簇索引,效率更高。如果要用到復合索引,則必須在查詢條件中包含該索引中的第一列例:Wherefirstname=‘張’該句能用到索引索引一(firstname,lastname)√

索引二(lastname,firstname)

×

查詢優(yōu)化二.盡量少用負向查詢,如not、!=、<>、!>、!<、notexists、notin以及notlike,它們不能用到索引

三.當notin后接一個子查詢語句時,統(tǒng)一改用關(guān)聯(lián)加條件的方式來處理。

例:Wherefirstname<>‘張’×查詢優(yōu)化替換后:查詢優(yōu)化三.

半?yún)⒄账饕\算符

Or

條件所有字段都要在同一個復合索引里才能用到索引例:Wherefirstname=‘張’Orlastname=‘三’該句能用到索引索引一(firstname)×

索引二(lastname)×

索引三(firstname,lastname)

√Like

通配符出現(xiàn)在字符串前面不能用到索引

例:索引(Lastname)WhereLastnameLike‘D%’能用到索引

WhereLastnameLike‘%D’不能用到索引×三.

半?yún)⒄账饕\算符

查詢優(yōu)化查詢優(yōu)化四.盡量少在where子句中的“=”左邊字段列進行函數(shù)、算術(shù)運算或其他表達式運算,因為這樣用不到索引

五.為提高查詢的效率,查詢路徑盡量優(yōu)化,比如用關(guān)聯(lián)表最少的視圖,

用最少的查詢嵌套。

六.盡可能不使用游標,除非不用游標其語義邏輯極其復雜或效率更加低下

例:WhereSubstring(firstname,1,2)=‘司馬’×見范例查詢優(yōu)化七.新建臨時表,使用selectinto比createtable更有效率

八.臨時表在使用完后要及時對其顯式刪除,避免長時間占用進程資源九.操作臨時資料集合,數(shù)據(jù)量少則定義表變量,數(shù)據(jù)量大則創(chuàng)建臨時表,前者比后者高效例:SelectAreaCode,AreaNameInto#temptableFromPub_AreaCreatetable#temptable

InsertInto#temptableSelectAreaCode,AreaNameFromPub_Area

@temptable表變量#temptable臨時表查詢優(yōu)化十.盡量避免反復檢索同一張或幾張表(使用相同的檢索條件),尤其是記錄筆數(shù)很多的表,這種情況可以先根據(jù)條件提取所需要的數(shù)據(jù)到臨時表,然后再做關(guān)聯(lián)十一.用來判斷表中是否存在記錄,exists比selectcount(1)更有效率十二.存儲過程中按照一定的次序來訪問你的表。如果你先鎖住表A,再鎖住表B,那么在所有的存儲都按照這個順序來鎖定它們,這樣能降低死鎖的發(fā)生其它注意事項一.不允許在數(shù)據(jù)庫中動態(tài)創(chuàng)建實表,視圖,實表或視圖索引,存儲過程,函數(shù)等數(shù)據(jù)庫對象

二.同一含義字段或變量、盡量避免定義成不同類型,造成顯式或隱含的類型轉(zhuǎn)換帶來的資源開銷。例如在where子句中numeric型和int型的列的比較三.Null與空串’’不相同,不可替用,轉(zhuǎn)換則用isnull(var,’’)

例:Declare@nnumeric(10,2)Declare@ttable(idint)……Whereid=@i

其它注意事項四.視圖里對查詢集進行排序不能影響其視圖顯示結(jié)果的排序,所以對顯示結(jié)果集排序要放在視圖外面。(SQL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論