SQL Server 中建立索引

2021-10-01 12:12:19 字數 1493 閱讀 7049

索引的概念

建立索引的目的:提高了資料庫系統的效能,加快資料的查詢速度與減少系統的響應時間。

索引是什麼:資料庫中的索引類似於一本書的目錄,在一本書中通過目錄可以快速找到你想要的資訊,而不需要讀完全書。

在資料庫中,資料庫程式使用索引可以快速查詢到表中的資料,而不必掃瞄整個表。

書中的目錄是乙個字詞以及各字詞所在的頁碼列表,資料庫中的索引是表中的值以及各值儲存位置的列表。

索引的利弊:查詢執行的大部分開銷是i/o,使用索引提高效能的乙個主要目標是避免全表掃瞄,因為全表掃瞄需要從磁碟上讀取表的每乙個資料頁,如果有索引指向資料值,則查詢只需要讀少數次的磁碟就行啦。

所以合理的使用索引能加速資料的查詢。但是索引並不總是提高系統的效能,帶索引的表需要在資料庫中占用更多的儲存空間,同樣用來新增修改刪除資料的命令執行時間以及維護索引所需的處理時間會更長。

所以我們要合理使用索引,及時更新去除次優索引。

索引的分類

索引就類似於中文字典前面的目錄,按照拼音或部首都可以很快的定位到所要查詢的字。

唯一索引(unique):每一行的索引值都是唯一的(建立了唯一約束,系統將自動建立唯一索引)。

主鍵索引:當建立表時指定的主鍵列,會自動建立主鍵索引,並且擁有唯一的特性。

聚集索引(clustered):聚集索引就相當於使用字典的拼音查詢,因為聚集索引儲存記錄是物理上連續存在的,即拼音 a 過了後面肯定是 b 一樣。

非聚集索引(nonclustered):非聚集索引就相當於使用字典的部首查詢,非聚集索引是邏輯上的連續,物理儲存並不連續。

聚集索引乙個表只能有乙個,而非聚集索引乙個表可以存在多個。

哪些字段需要建索引

1、表的主鍵、外來鍵必須有索引

2、資料量超過300的表應該有索引

3、經常與其他表進行連線的表,在連線欄位上應該建立索引

4、經常出現在where子句中的字段,特別是大表的字段,應該建立索引

5、在頻繁進行排序或分組(即進行group by或order by操作)的字段,應該建立索引

6、索引應該建在選擇性高的字段上

7、索引應該建在小字段上,對於大的文字字段甚至超長字段,不要建索引,盡可能的使用整數做為鍵值,因為整數的訪問速度最快

8、復合索引的建立需要進行仔細分析;盡量考慮用單字段索引代替

9、頻繁進行資料操作的表,不要建立太多的索引

10、刪除無用的索引,避免對執行計畫造成負面影響

索引太多的壞處

1、儲存空間會變大,每個索引都要空間儲存

2、如果非聚集索引很多,一旦聚集索引改變,那麼所有非聚集索引都會跟著變

3、過多索引會導致優化器優化過程需要評估的組合增多,增加查詢耗時

4、每個索引都有統計資訊,索引越多統計資訊越多,增加查詢耗時

5、更新開銷,一旦乙個資料改變,並且改變的列比較多,可能會引起好幾個索引跟著改變,導致update,delete,insert變慢

SQL Server建立索引

什麼是索引 拿漢語字典的目錄頁 索引 打比方 正如漢語字典中的漢字按頁存放一樣,sql server中的資料記錄也是按頁存放的,每頁容量一般為4k 為了加快查詢的速度,漢語字 詞 典一般都有按拼音 筆畫 偏旁部首等排序的目錄 索引 我們可以選擇按拼音或筆畫查詢方式,快速查詢到需要的字 詞 同理,sq...

SQL Server建立索引

什麼是索引 拿漢語字典的目錄頁 索引 打比方 正如漢語字典中的漢字按頁存放一樣,sql server中的資料記錄也是按頁存放的,每頁容量一般為4k 為了加快查詢的速度,漢語字 詞 典一般都有按拼音 筆畫 偏旁部首等排序的目錄 索引 我們可以選擇按拼音或筆畫查詢方式,快速查詢到需要的字 詞 同理,sq...

SQL server 建立索引

排序 聚集索引 create clustered index inx entry stock bi on entry stock d entry stock bi 建立非聚集索引 create nonclustered index inx entry stock on entry stock d e...