解讀SQL Server數(shù)據(jù)庫(kù)開發(fā)要注意的21點(diǎn)(2)_Mssql數(shù)據(jù)庫(kù)教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:如何提高SQL語句性能在本文中,將講述四項(xiàng)技術(shù),這些技術(shù)可用于提高基于SQLServer的性能或改善其可伸縮性,將仔細(xì)說明LEFTJOIN、CROSSJOIN的使用以及IDENTITY值的檢索。請(qǐng)記住,根本沒有神奇的解決方案。調(diào)整您的數(shù)據(jù)庫(kù)及其查詢需要占用時(shí)間、進(jìn)行分析,還需要大量的測(cè)試。這些技
13、不要打開大的數(shù)據(jù)集
一個(gè)經(jīng)常被提出的問題是:我怎樣才能迅速的將100000條記錄添加到ComboBox中?這是不對(duì)的,你不能也不需要這樣做。很簡(jiǎn)單,你的用戶要瀏覽100000條記錄才能找到需要的記錄,他一定會(huì)詛咒你的。在這里,你需要的是一個(gè)更好的UI,你需要為你的用戶顯示不超過100或200條記錄。
14、不要使用服務(wù)器端游標(biāo)
與服務(wù)器端游標(biāo)比起來,客戶端游標(biāo)可以減少服務(wù)器和網(wǎng)絡(luò)的系統(tǒng)開銷,并且還減少鎖定時(shí)間。
15、使用參數(shù)查詢
有時(shí),我在CSDN技術(shù)論壇看到類似這樣的問題:“SELECT * FROM a WHERE a.id=’A’B,因?yàn)閱我?hào)查詢發(fā)生異常,我該怎么辦?”,而普遍的回答是:用兩個(gè)單引號(hào)代替單引號(hào)。這是錯(cuò)誤的。這樣治標(biāo)不治本,因?yàn)槟氵會(huì)在其他一些字符上遇到這樣的問題,更何況這樣會(huì)導(dǎo)致嚴(yán)重的bug,除此以外,這樣做還會(huì)使SQL Server的緩沖系統(tǒng)無法發(fā)揮應(yīng)有的作用。使用參數(shù)查詢, 釜底抽薪,這些問題統(tǒng)統(tǒng)不存在了。
16、在程序編碼時(shí)使用大數(shù)據(jù)量的數(shù)據(jù)庫(kù)
程序員在開發(fā)中使用的測(cè)試數(shù)據(jù)庫(kù)一般數(shù)據(jù)量都不大,可經(jīng)常的是最終用戶的數(shù)據(jù)量都很大。我們通常的做法是不對(duì)的,原因很簡(jiǎn)單:現(xiàn)在硬盤不是很貴,可為什么性能問題卻要等到已經(jīng)無可挽回的時(shí)候才被注意呢?
17、不要使用INSERT導(dǎo)入大批的數(shù)據(jù)
請(qǐng)不要這樣做,除非那是必須的。使用UTS或者BCP,這樣你可以一舉而兼得靈活性和速度。
18、注意超時(shí)問題
查詢數(shù)據(jù)庫(kù)時(shí),一般數(shù)據(jù)庫(kù)的缺省都比較小,比如15秒或者30秒。而有些查詢運(yùn)行時(shí)間要比這長(zhǎng),特別是當(dāng)數(shù)據(jù)庫(kù)的數(shù)據(jù)量不斷變大時(shí)。
19、不要忽略同時(shí)修改同一記錄的問題
有時(shí)候,兩個(gè)用戶會(huì)同時(shí)修改同一記錄,這樣,后一個(gè)修改者修改了前一個(gè)修改者的操作,某些更新就會(huì)丟失。處理這種情況不是很難:創(chuàng)建一個(gè)timestamp字段,在寫入前檢查它,如果允許,就合并修改,如果存在沖突,提示用戶。
20、在細(xì)節(jié)表中插入紀(jì)錄時(shí),不要在主表執(zhí)行SELECT MAX(ID)
這是一個(gè)普遍的錯(cuò)誤,當(dāng)兩個(gè)用戶在同一時(shí)間插入數(shù)據(jù)時(shí),這會(huì)導(dǎo)致錯(cuò)誤。你可以使用SCOPE_IDENTITY,IDENT_CURRENT和IDENTITY。如果可能,不要使用IDENTITY,因?yàn)樵谟杏|發(fā)器的情況下,它會(huì)引起一些問題(詳見這里的討論)。
21、避免將列設(shè)為NULLable
如果可能的話,你應(yīng)該避免將列設(shè)為NULLable。系統(tǒng)會(huì)為NULLable列的每一行分配一個(gè)額外的字節(jié),查詢時(shí)會(huì)帶來更多的系統(tǒng)開銷。另外,將列設(shè)為NULLable使編碼變得復(fù)雜,因?yàn)槊恳淮卧L問這些列時(shí)都必須先進(jìn)行檢查。
我并不是說NULLS是麻煩的根源,盡管有些人這樣認(rèn)為。我認(rèn)為如果你的業(yè)務(wù)規(guī)則中允許“空數(shù)據(jù)”,那么,將列設(shè)為NULLable有時(shí)會(huì)發(fā)揮很好的作用,但是,如果在類似下面的情況中使用NULLable,那簡(jiǎn)直就是自討苦吃。
CustomerName1
CustomerAddress1
CustomerEmail1
CustomerName2
CustomerAddress2
CustomerEmail3
CustomerName1
CustomerAddress2
CustomerEmail3
如果出現(xiàn)這種情況,你需要規(guī)范化你的表了。
分享:揭秘加快Sql server時(shí)間查詢速度的辦法數(shù)據(jù)量大的情況下 Sql server時(shí)間比較查詢的速度是比較慢的,如果 在access中進(jìn)行時(shí)間的比較,sql語句很簡(jiǎn)單,select*fromtablewherethetime#\now()\#這樣即可。 但在mssql就不能這樣,要用datediff語句和getdate()函數(shù)進(jìn)行比較。 如selectcount(*)fromtab
相關(guān)Mssql數(shù)據(jù)庫(kù)教程:
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫(kù),提示 無法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫(kù)教程推薦
- 解決SQLServer與服務(wù)器連接時(shí)出錯(cuò)的方法
- 用SQL Server Having計(jì)算列和平均值
- Sql Server安裝出錯(cuò),安裝程序配置服務(wù)器失敗的解決方法小結(jié)
- 數(shù)據(jù)庫(kù)的分離及附加
- SQL Server與Oracle并行訪問的本質(zhì)區(qū)別
- 遠(yuǎn)程連接SQL Server 2000服務(wù)器的解決方案
- 揭秘加快Sql server時(shí)間查詢速度的辦法
- 用sp_lock診斷SQL Sever的性能問題
- 測(cè)試SQL Server業(yè)務(wù)規(guī)則鏈接方法
- 如何有效防止Java程序源碼被人偷窺?
- 相關(guān)鏈接:
復(fù)制本頁(yè)鏈接| 搜索解讀SQL Server數(shù)據(jù)庫(kù)開發(fā)要注意的21點(diǎn)(2)
- 教程說明:
Mssql數(shù)據(jù)庫(kù)教程-解讀SQL Server數(shù)據(jù)庫(kù)開發(fā)要注意的21點(diǎn)(2)
。