SQL效能優化之索引技巧總結

2021-11-01 21:07:41 字數 1342 閱讀 3189

1.將where語句中經常用到的列設定為索引。

2.使用窄索引,例如int欄位,避免使用寬度過大的列作為索引。

與char(4)相比,雖然長度一致,但仍然是int更適合作為索引列。

4.使用高選擇性列作為索引,避免使用類似「性別」這樣不具備選擇性的列,這樣的索引不如不建。

5.結合where語句的常用性,可以使用復合索引達到高選擇性的目的。

6.最好將高選擇性、列寬度小、整數型別的列放在復合索引的靠前位置。

7.復合索引的第乙個列單獨用於where語句時仍然有效,復合索引的其他列越是排在後面的,單獨使用效率越低。

8.復合索引最佳的用途是按照索引順序在where語句中使用該索引中的所有列。

9.索引可以提高查詢效能,過多的索引可能會影響insert,update,delete的效能,但這些語句的where子句會從索引獲得好處,好處與影響只差就是索引為這些操作帶來的效能提公升。

10.建立非聚簇索引後,再建立聚簇索引時會花費很多時間,但建立後不會對效能產生影響。

11.聚簇索引更應使用窄型別,否則不但影響聚簇索引本身的效能,還會影響所有非聚簇索引的效能。

12.對於通過where的between語句獲取乙個範圍的大結果集,並用該列進行order by,該列適用於聚簇索引。同樣的情況下如果使用非聚簇索引,其效能甚至會略差於不用索引。

13.三種不適用於聚簇索引的情況:列總是需要更新,寬型別列,可能存在大量重複資料的列。

14.非聚簇索引適合於從大資料量表中檢索出少量資料,如果是查詢大量資料應考慮使用聚簇索引,非聚簇索引在這種情況下是沒有用的,甚至有反作用(覆蓋索引除外)。

15.如果某個返回大結果集的select語句經常被使用,可將其中除聚簇索引以外的列(包括where子句中的列)都設定成乙個復合的非聚簇索引,這時非聚簇索引獲得大結果集的效能將會超過聚簇索引,這種非聚簇索引被稱為覆蓋索引。

16.非聚簇索引務必使用高選擇性列。

17.乙個表只能有乙個聚簇索引,留給最常用的,窄型別的,不常更新的列,當然這種列通常就是主鍵。

18.使用include關鍵字建立覆蓋索引,可以不增加索引鍵的大小,有利於效能。

19.一些單獨的非聚簇索引,sql會在查詢時通過交叉索引技術即時的建立覆蓋索引,雖然效能稍差,但仍然不錯,所以無需為每個select建立覆蓋索引,可以建立最常用的覆蓋索引,其他列建立成單獨的索引。

20.很多時候建立多個窄索引比建立建立寬的覆蓋索引更好。

21.過濾索引是加在索引上的乙個where語句,會進一步提高效能,例如可以通過該where語句首先過濾到null,再使用索引進行非空查詢。

22.在檢視上建立聚簇索引可以立即將檢視結果實物化在磁碟上,並可以建立多個非聚簇索引,提高檢視的查詢效能,但如果檢視的基礎表頻繁更新,將帶來更大的開銷。

SQL語句優化規律總結 ORACLE

1 from oracle的解析器按照從右到左的順序處理from子句中的表名,因此from子句中寫在最後的表 基礎表 driving table 將被最先處理.在from子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表 放在where的最後 如果有3個以上的表連線查詢,那就需要選擇交叉...

SEO搜尋引擎優化的經典技巧38條

seo 優化,已成建站之基礎工作。1 內容是seo的基礎,關鍵詞是seo的核心,鏈結是seo的關鍵,ueo是seo的深化。2 seo做得好的 都是一樣的,seo做得不好的 各有各的不同。3 要成為seoer,首先和 google yahoo等搜尋引擎談戀愛。4 seo沒有高手,只有新手和老手。5 選...

SEO優化之搜尋引擎排名下降的原因

當搜尋引擎的演算法改變或者加強時,導致一些 的某些關鍵字排名消失,一些管理員就說他們的 消失了.實際上並非如此,在搜尋引擎演算法改變或加強時會引起一些頁面丟失,或者是過濾 懲罰了某一些頁面而不是整個 a.你的伺服器在關鍵的時候出現了故障不能正常訪問 b.你的 存在問題 c.由於採用不正當的優化手法,...