怎樣從客戶端提升SQL Server數(shù)據(jù)庫性能_Mssql數(shù)據(jù)庫教程
推薦:注意SQL Server視圖管理中的四個(gè)限制條件通過視圖來訪問數(shù)據(jù),其優(yōu)點(diǎn)是非常明顯的。如可以起到數(shù)據(jù)保密、保證數(shù)據(jù)的邏輯獨(dú)立性、簡(jiǎn)化查詢操作等等。 但是,話說回來,SQL Server數(shù)據(jù)庫中的視圖并不是萬能的,他跟表這個(gè)基本對(duì)象還是有重大的區(qū)別。在使用視圖的時(shí)候,需要遵守四大限制。 限制條件一
第一:編寫限制搜索范圍的查詢語句。
眾所周知,在數(shù)據(jù)庫查詢的時(shí)候返回記錄的多少直接關(guān)系到查詢的效率。所以,在客戶端通過一定的條件語句,限制搜索的范圍,往往可以大幅度的提高查詢的效率。
如用戶在客戶端查詢數(shù)據(jù)庫的時(shí)候,在查詢語句中,加入TOP語句,讓其顯示前面的50條或者100條記錄。因?yàn)楦鶕?jù)經(jīng)驗(yàn),用戶在查詢數(shù)據(jù)的時(shí)候,60%左右要查看的都是靠前面的記錄。特別是在一些歷史交易信息表中,如在ERP系統(tǒng)的庫存交易表中,就可以只顯示前面幾百條的記錄,而不需要顯示所有的記錄。當(dāng)用戶覺得記錄不夠時(shí),可以按“全部”,然后客戶端再去服務(wù)器查詢所有的結(jié)果。這種設(shè)計(jì)的話,就可以非常有效的提高數(shù)據(jù)庫的查詢性能。
如可以在在客戶端設(shè)置默認(rèn)的條件語句。如在ERP系統(tǒng)中,有個(gè)采購定單的表單;在后臺(tái)數(shù)據(jù)庫中,就對(duì)應(yīng)著采購定單這么一張表。默認(rèn)在查詢采購定單的時(shí)候,查詢到的是未結(jié)帳的采購定單。如此的話,即使用戶在查詢采購單時(shí),沒有輸入采購定單號(hào)或者定單日期等限制條件,客戶端在向服務(wù)器遞交查詢語句的時(shí)候,會(huì)默認(rèn)把限制條件語句加入進(jìn)去。如此,對(duì)于提高數(shù)據(jù)庫首次查詢的效率是非常有幫助的。
當(dāng)然,無論是利用TOP語句,還是利用Where語句設(shè)置默認(rèn)的限制條件,都不是隨便設(shè)置的。這往往需要根據(jù)客戶的使用習(xí)慣與表單的性質(zhì),來進(jìn)行確定。如對(duì)于客戶信息表,其客戶本來數(shù)量也不多,所以,就沒有必要設(shè)置限制搜索范圍的查詢語句。但是對(duì)于庫存交易明細(xì)表,一個(gè)月下來,就有可能有成千上完條記錄。如此海量的數(shù)據(jù),若不設(shè)置限制條件的話,則查詢起來,用戶等待的時(shí)間會(huì)比較長(zhǎng)。所以,針對(duì)這種情況,我們默認(rèn)可以其只顯示前面500條記錄或者只顯示最近30天之內(nèi)的交易信息。
總之,在客戶端適當(dāng)?shù)募尤胂拗扑阉鞣秶牟樵冋Z句,是在客戶端提高數(shù)據(jù)庫服務(wù)器性能的一個(gè)首選的方法。
第二:盡量不要采用復(fù)雜的存儲(chǔ)過程。
SQL Server數(shù)據(jù)庫雖然提供了很強(qiáng)的存儲(chǔ)過程功能,但是,在前臺(tái)應(yīng)用程序設(shè)計(jì)的時(shí)候,最好不要頻繁的去調(diào)用數(shù)據(jù)庫的存儲(chǔ)過程。這主要是因?yàn)榇鎯?chǔ)過程雖然方便,但是其執(zhí)行速度沒有普通的應(yīng)用程序,如C語言那么快。
而從功能上看,很多存儲(chǔ)過程可以完成的功能,前臺(tái)應(yīng)用程序完全可以實(shí)現(xiàn)。如在一些進(jìn)銷存管理系統(tǒng)中,往往需要把小寫金額轉(zhuǎn)換成大寫金額,在采購定單上打印出來。這個(gè)功能即可以通過數(shù)據(jù)庫的存儲(chǔ)過程實(shí)現(xiàn),也可以通過前臺(tái)的應(yīng)用程序?qū)崿F(xiàn)。但是,根據(jù)筆者的觀察,發(fā)現(xiàn)數(shù)據(jù)庫的存儲(chǔ)功能的性能不是很理想。若存儲(chǔ)過程稍微比較復(fù)雜的話,如參數(shù)比較多時(shí),客戶端的響應(yīng)時(shí)間就會(huì)比較慢。相反,如果不是在數(shù)據(jù)庫后臺(tái)實(shí)現(xiàn)這個(gè)功能,而是直接在前臺(tái)利用應(yīng)用程序?qū)崿F(xiàn)的話,則其速度就會(huì)快許多。
另外,若在后臺(tái)數(shù)據(jù)庫中建立存儲(chǔ)過程的話,會(huì)增加服務(wù)器的工作量。設(shè)想一下,現(xiàn)在采購部門有十個(gè)員工,若在一個(gè)時(shí)段內(nèi),都在維護(hù)采購定單的話,則就要同時(shí)調(diào)用這個(gè)存儲(chǔ)過程,那么對(duì)于服務(wù)器的資源就會(huì)“爭(zhēng)用”。相反,若在客戶端實(shí)現(xiàn)這個(gè)功能的話,因?yàn)槠涠际窃诳蛻舳松蠄?zhí)行,所以服務(wù)器資源大家就不用你爭(zhēng)我奪了。
所以,筆者在數(shù)據(jù)庫設(shè)計(jì)的時(shí)候,很少采用存儲(chǔ)過程。能夠利用客戶端應(yīng)用程序?qū)崿F(xiàn)的,就采用前臺(tái)應(yīng)用程序?qū)崿F(xiàn)。真的要采用存儲(chǔ)過程的話,也要采用那些減少爭(zhēng)用和增加并發(fā)性的存儲(chǔ)過程。
分享:大內(nèi)存SQL Server數(shù)據(jù)庫的加速劑為數(shù)據(jù)庫配置比較大的內(nèi)存,可以有效提高數(shù)據(jù)庫性能。因?yàn)閿?shù)據(jù)庫在運(yùn)行過程中,會(huì)在內(nèi)存中劃出一塊區(qū)域來作為數(shù)據(jù)緩存。通常情況下,用戶訪問數(shù)據(jù)庫時(shí),數(shù)據(jù)先會(huì)被讀取到這個(gè)數(shù)據(jù)緩存中。當(dāng)下次用戶還需要訪問這個(gè)數(shù)據(jù)時(shí),就會(huì)從這個(gè)數(shù)據(jù)緩存中讀
- 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ù)庫,提示 無法為該請(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ù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
- SQL參數(shù)化查詢的另一個(gè)理由——命中執(zhí)行計(jì)劃
- 談SQL Server 2005最后升級(jí):SP3年底發(fā)布
- 測(cè)試SQL Server業(yè)務(wù)規(guī)則鏈接方法
- 解析使用 SQL Server 數(shù)據(jù)庫查詢累計(jì)值的方法
- 在SQL Server 2008中運(yùn)用表值參數(shù)(TVP)
- 解析配置SQL SERVER合并復(fù)制(二)建立域用戶
- 怎樣減少SQL Server死鎖發(fā)生的情況
- 如何在SQL Server數(shù)據(jù)庫中拆分字符串函數(shù)
- sql server 2005用戶權(quán)限設(shè)置深入分析
- 怎樣合理設(shè)置內(nèi)存讓數(shù)據(jù)庫與其他程序共存
猜你也喜歡看這些
- MySQL 關(guān)于表復(fù)制 insert into 語法的詳細(xì)介紹
- mysql創(chuàng)建函數(shù)出現(xiàn)1418錯(cuò)誤的解決辦法
- Mysql select in 按id排序?qū)崿F(xiàn)方法
- MySQL 主主同步配置步驟
- 30種mysql優(yōu)化sql語句查詢的方法
- 解決MYSQL出現(xiàn)Can''t create/write to file ''#sql_5c0_0.MYD''的問題
- 如何用命令行進(jìn)入mysql具體操作步驟
- mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫以及函數(shù)、存儲(chǔ)過程的介紹
- KB967723補(bǔ)丁造成的MYSQL在Win2003上頻繁連接不上
- 通過mysqladmin遠(yuǎn)程管理mysql的方法
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-怎樣從客戶端提升SQL Server數(shù)據(jù)庫性能
。