通俗易懂SQL server 中的索引

2021-10-01 09:18:31 字數 1734 閱讀 4444

一:什麼是索引?

資料庫索引其實就是類似目錄的乙個東西,搜尋的時候能夠引導你更好更快的查出來。主要目的是提高了sql server系統的效能,加快資料的查詢速度與減少系統的響應時間 。

二:為什麼要用索引?

好的索引會讓資料查詢效率提高百倍,所以必要的情況下需要使用索引來提高速度。

三:怎麼使用索引?

1:索引分類

分為聚合索引和非聚合索引。

如何理解?10名同學按照名字 a-z排序名單這個就是聚合索引   按照高低個子 排序名單就是非聚合索引

聚集索引儲存記錄是物理上連續存在,a後面肯定是b,1後面肯定是2。而非聚集索引是邏輯上的連續。突出邏輯性

聚集索引乙個表只能有乙個,就像一本書只能有乙個目錄。

2:如何選擇建立那種索引

白話:既然索引 就是為了效率效能而誕生,那麼就要根據 查詢的內容來為基準,我查詢的慢了就可以考慮建個索引。

那查哪一列慢了就考慮給哪一列建立索引。就是這個思路。

接下來官方一下規則吧:

建立索引的原則:

1) 定義主鍵的資料列一定要建立索引。

2) 定義有外來鍵的資料列一定要建立索引。

3) 對於經常查詢的資料列最好建立索引。

4) 對於需要在指定範圍內的快速或頻繁查詢的資料列;

5) 經常用在where子句中的資料列。

6) 經常出現在關鍵字order by、group by、distinct後面的字段,建立索引。如果建立的是復合索引,索引的字段順序要和這些關鍵字後面的字段順序一致,否則索引不會被使用。

7) 對於那些查詢中很少涉及的列,重複值比較多的列不要建立索引。

8) 對於定義為text、image和bit的資料型別的列不要建立索引。

9) 對於經常訪問的列避免建立索引 

9) 限制表上的索引數目。對乙個存在大量更新操作的表,所建索引的數目一般不要超過3個,最多不要超過5個。索引雖說提高了訪問速度,但太多索引會影響資料的更新操作。

10) 對復合索引,按照欄位在查詢條件**現的頻度建立索引。在復合索引中,記錄首先按照第乙個字段排序。對於在第乙個欄位上取值相同的記錄,系統再按照第二個欄位的取值排序,以此類推。因此只有復合索引的第乙個字段出現在查詢條件中,該索引才可能被使用,因此將應用頻度高的字段,放置在復合索引的前面,會使系統最大可能地使用此索引,發揮索引的作用。

3:建立語句

create [unique][clustered | nonclustered]  index  index_name  

on  [with [index_property [,....n]]

說明:unique: 建立唯一索引。

clustered: 建立聚集索引。

nonclustered: 建立非聚集索引。

index_property: 索引屬性。

unique索引既可以採用聚集索引結構,也可以採用非聚集索引的結構,如果不指明採用的索引結構,則sql server系統預設為採用非聚集索引結構。

刪除索引語法:

drop index table_name.index_name[,table_name.index_name]

說明:table_name: 索引所在的表名稱。

index_name : 要刪除的索引名稱。

顯示索引資訊:

使用系統儲存過程:sp_helpindex 檢視指定表的索引資訊。

執行**如下:

exec sp_helpindex book1;

可以參考

這些不錯的文章

通俗易懂SQL server 中的鎖

之前講了資料庫中的事務,為了讓事務順利執行,就有了鎖?1 什麼是鎖?顧名思義,就是防止保護被偷東西,那麼在資料庫中就是防止資料被偷也就是 資料不完整。2 為什麼要用鎖?因為有些時候會出錯,要保證資料正常不出現問題就需要鎖。既然是防止資料被偷,那麼什麼情況下資料 會變得不完整呢?一下就是錯誤例項 在多...

通俗易懂SQL server 中的三大正規化

一 第一正規化 官方定義 資料庫表中的所有欄位都是單一屬性,不可再分的。強調的是列的原子性。白話 每一列都有自己的屬性說明,誰也幫不了誰,誰幹誰的活。清晰明了。二 第二正規化 官方定義 一是表必須有乙個主鍵 二是沒有包含在主鍵中的列必須完全依賴於主鍵,而不能只依賴於主鍵的一部分。白話 資料庫表中有倆...

SQLSERVER通俗易懂的連線查詢 聯合查詢

最近有好多小夥伴對連線查詢有很多的疑問,當然包括初學者和工作幾年的老鳥 首先建立兩個表,學生和班級表,乙個班級對應多個學生 新建學生表 select into student from select 1 as id 張三 as name 18 as age,1 as classid union se...