轉帖|其它|編輯:郝浩|2010-12-10 14:03:58.000|閱讀 599 次
概述:對于web應用開發,多數性能瓶頸均出現在數據庫上,除了采用分布式架構或云處理(大公司基本上都是),更重要的是平時程序設計時要遵照一些規則,從根本上提高系統的性能,以下總結了一些常用的規則方法,僅供參考。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
對于web應用開發,多數性能瓶頸均出現在數據庫上,除了采用分布式架構或云處理(大公司基本上都是),更重要的是平時程序設計時要遵照一些規則,從根本上提高系統的性能,以下總結了一些常用的規則方法,僅供參考。
1、 把數據、日志、索引放到不同的I/O設備上,增加讀取速度。數據量(尺寸)越大,提高I/O越重要。
2、 縱向、橫向分割表,減少表的尺寸,如:可以把大數據量的字段拆分表。
3、 根據查詢條件,建立索引,優化索引、優化訪問方式,限制結果集的數據量。注意填充因子要適當(最好是使用默認值0)。索引應該盡量小,盡量使用字節數小的列建索引,不要對有限的幾個值的列建單一索引。
4、 用OR的字句可以分解成多個查詢,并且通過UNION鏈接多個查詢。它們的速度只與是否使用索引有關,如果查詢需要用到聯合索引,用UNION all執行的效率更高。
5、 在查詢SELECT語句中用WHERE子句限制返回的行數,避免表掃描。如果返回不必要的數據,則浪費了服務器的I/O資源,加重了網絡的負擔,降低了性能。如果表很大,在表掃描期間將表鎖住,禁止其他的聯結訪問表,后果很嚴重。
6、 注意使用DISTINCT,在沒有必要時不要用,它同UNION一樣會使查詢變慢。
7、 在IN后面值的列表中,將出現最頻繁的值放在最前面,出現最少的放在最后面,減少判斷的次數。
8、 一般在GROUP BY和HAVING子句之前就能剔除多余的行,所以盡量不要用它們來做剔除行的工作,也就是說盡可能在WHERE中過濾數據。
9、 盡量將數據的處理工作放在服務器上,減少網絡的開銷,如使用存儲過程。存儲過程是編譯、優化過,并且被組織到一個執行規劃里,且存儲在數據庫中的SQL語句(存儲過程是數據庫服務器端的一段程序),是控制流語言的集合,速度當然快。
10、 不要在一句話里再三地使用相同的函數,浪費資源,將結果放在變量里再調用更快。
11、 針對大量只讀查詢操作進行優化的方法:
12、 對于SQL語句書寫時的一些建議:
SELECT * FROM dbo.Users
DECLARE @USER_ID INT
,@USER_NAME VARCHAR(50)
,@PASSWORD VARCHAR(50)
SELECT @USER_ID = 1001
,@USER_NAME = 'xiaojun.liu'
SELECT @USER_ID = 1001
,@USER_NAME = 'xiaojun.liu'
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:博客轉載