線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1405
推到 Plurk!
推到 Facebook!

優化資料庫的思想及SQL語句優化的原則

 
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-21 21:39:08 IP:61.221.xxx.xxx 未訂閱
此為轉貼資料 優化資料庫的思想及SQL語句優化的原則 優化資料庫的思想: ================ 1、關鍵字段建立索引。 2、使用存儲過程,它使SQL變得更加靈活和高效。 3、備份資料庫和清除垃圾資料。 4、SQL語句語法的優化。(可以用Sybase的SQL Expert,可惜我沒找到unexpired的 序列號) 5、清理刪除日誌。 SQL語句優化的原則: ================== 1、使用索引來更快地遍曆表。 缺省情況下建立的索引是非群集索引,但有時它並不是最佳的。在非群集索引 下,資料在物理上隨機存放在資料頁上。合理的索引設計要建立在 對各種查詢的分析和預測上。一般來說:?.有大量重復值、且經常有範圍查詢 (between, > ,< ,> =,< =)和order by、group by發生的列,可考 慮建立群集索引;?.經常同時存取多列,且每列都含有重復值可考慮建立組合索引 ;?.組合索引要儘量使關鍵查詢形成索引覆蓋,其前導列一定 是使用最頻繁的列。索引雖有助於提高性能但不是索引越多越好,恰好相反過多的索 引會導致系統低效。用戶在表中每加進一個索引,維護索引集 合就要做相應的更新工作。 2、IS NULL 與 IS NOT NULL 不能用null作索引,任何包含null值的列都將不會被包含在索引中。即使索引有 多列這樣的情況下,只要這些列中有一列含有null,該列就會從 索引中排除。也就是說如果某列存在空值,即使對該列建索引也不會提高性能。任何 在where子句中使用is null或is not null的語句優化器是不允 許使用索引的。 3、IN和EXISTS EXISTS要遠比IN的效率高。裏面關係到full table scan和range scan。幾乎將所 有的IN操作符子查詢改寫?使用EXISTS的子查詢。 4、在海量查詢時儘量少用格式轉換。 5、當在SQL SERVER 2000中,如果存儲過程只有一個參數,並且是OUTPUT類型的,必 須在調用這個存儲過程的時候給這個參數一個初始的值,否則 會出現調用錯誤。 6、ORDER BY和GROPU BY 使用ORDER BY和GROUP BY短語,任何一種索引都有助於SELECT的性能提高。注意 如果索引列裏面有NULL值,Optimizer將無法優化。 7、任何對列的操作都將導致表掃描,它包括資料庫函數、計算運算式等等,查詢時 要盡可能將操作移至等號右邊。 8、IN、OR子句常會使用工作表,使索引失效。如果不?生大量重復值,可以考慮把 子句拆開。拆開的子句中應該包含索引。 9、SET SHOWPLAN_ALL ON 查看執行方案。DBCC檢查資料庫資料完整性。 DBCC(DataBase Consistency Checker)是一組用於驗證 SQL Server 資料 庫完整性的程式。 10、慎用游標 在某些必須使用游標的場合,可考慮將符合條件的資料行轉入臨時表中,再對臨 時表定義游標進行操作,這樣可使性能得到明顯提高。 總結:所謂優化即WHERE子句利用了索引,不可優化即發生了表掃描或額外開銷。經 驗顯示,SQL Server性能的最大改進得益於邏輯的資料庫設計、 索引設計和查詢設計方面。反過來說,最大的性能問題常常是由其中這些相同方面中 的不足引起的。其實SQL優化的實質就是在結果正確的前提下, 用優化器可以識別的語句,充份利用索引,減少表掃描的I/O次數,儘量避免表搜索 的發生。其實SQL的性能優化是一個複雜的過程,上述這些只是 在應用層次的一種體現,深入研究還會涉及資料庫層的資源配置、網路層的流量控制 以及作業系統層的總體設計。 不知有人有更精彩的解說或經驗嗎? 或其他也痕重要的觀念
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
系統時間:2024-05-15 3:37:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!