從客戶端提升SQL server數據庫性能
第一:編寫限制搜索范圍的查詢語句。
眾所周知,在數據庫查詢的時候返回記錄的多少直接關系到查詢的效率。所以,在客戶端通過一定的條件語句,限制搜索的范圍,往往可以大幅度的提高查詢的效率。
如用戶在客戶端查詢數據庫的時候,在查詢語句中,加入TOP語句,讓其顯示前面的50條或者100條記錄。因為根據經驗,用戶在查詢數據的時候,60%左右要查看的都是靠前面的記錄。特別是在一些歷史交易信息表中,如在ERP系統的庫存交易表中,就可以只顯示前面幾百條的記錄,而不需要顯示所有的記錄。當用戶覺得記錄不夠時,可以按“全部”,然后客戶端再去服務器查詢所有的結果。這種設計的話,就可以非常有效的提高數據庫的查詢性能。
如可以在在客戶端設置默認的條件語句。如在ERP系統中,有個采購定單的表單;在后臺數據庫中,就對應著采購定單這么一張表。默認在查詢采購定單的時候,查詢到的是未結帳的采購定單。如此的話,即使用戶在查詢采購單時,沒有輸入采購定單號或者定單日期等限制條件,客戶端在向服務器遞交查詢語句的時候,會默認把限制條件語句加入進去。如此,對于提高數據庫首次查詢的效率是非常有幫助的。
當然,無論是利用TOP語句,還是利用Where語句設置默認的限制條件,都不是隨便設置的。這往往需要根據客戶的使用習慣與表單的性質,來進行確定。如對于客戶信息表,其客戶本來數量也不多,所以,就沒有必要設置限制搜索范圍的查詢語句。但是對于庫存交易明細表,一個月下來,就有可能有成千上完條記錄。如此海量的數據,若不設置限制條件的話,則查詢起來,用戶等待的時間會比較長。所以,針對這種情況,我們默認可以其只顯示前面500條記錄或者只顯示最近30天之內的交易信息。
總之,在客戶端適當的加入限制搜索范圍的查詢語句,是在客戶端提高數據庫服務器性能的一個首選的方法。
第二:盡量不要采用復雜的存儲過程。
SQL Server數據庫雖然提供了很強的存儲過程功能,但是,在前臺應用程序設計的時候,最好不要頻繁的去調用數據庫的存儲過程。這主要是因為存儲過程雖然方便,但是其執行速度沒有普通的應用程序,如C語言那么快。
而從功能上看,很多存儲過程可以完成的功能,前臺應用程序完全可以實現。如在一些進銷存管理系統中,往往需要把小寫金額轉換成大寫金額,在采購定單上打印出來。這個功能即可以通過數據庫的存儲過程實現,也可以通過前臺的應用程序實現。但是,根據筆者的觀察,發現數據庫的存儲功能的性能不是很理想。若存儲過程稍微比較復雜的話,如參數比較多時,客戶端的響應時間就會比較慢。相反,如果不是在數據庫后臺實現這個功能,而是直接在前臺利用應用程序實現的話,則其速度就會快許多。
另外,若在后臺數據庫中建立存儲過程的話,會增加服務器的工作量。設想一下,現在采購部門有十個員工,若在一個時段內,都在維護采購定單的話,則就要同時調用這個存儲過程,那么對于服務器的資源就會“爭用”。相反,若在客戶端實現這個功能的話,因為其都是在客戶端上執行,所以服務器資源大家就不用你爭我奪了。
所以,筆者在數據庫設計的時候,很少采用存儲過程。能夠利用客戶端應用程序實現的,就采用前臺應用程序實現。真的要采用存儲過程的話,也要采用那些減少爭用和增加并發性的存儲過程。
關鍵字:數據庫、SQL server、客戶端
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解