SQL Server 索引
阿新 • • 發佈:2021-01-01
是對錶中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定資訊。
索引的一個主要目的就是加快檢索表中資料,亦即能協助資訊搜尋者儘快的找到符合限制條件的記錄ID的輔助資料結構。
SQL Server 中索引主要分為 聚集索引(Clustered)和 非聚集索引(Non-clustered)
聚集索引(Clustered):
1、表中各行的物理順序與鍵值的邏輯(索引)順序相同,每個表只能有一個
2、主鍵索引:為表定義一個主鍵將自動建立主鍵索引,主鍵索引是唯一索引的特殊型別
3、主鍵索引要求主鍵中的每個值是唯一的,並且不能為空
非聚集索引(Non-clustered):
1、非聚集索引指定表中的邏輯順序
2、資料儲存在一個位置,索引儲存在另一個位置,索引中包含指向資料儲存位置的指標
3、可以有多個,小於249個
4、唯一索引:唯一索引不允許兩行具有相同的索引值
開發過程中,主要講的是非聚集索引
建立非聚集索引的原則:
1、頻繁搜尋的列
2、經常用作查詢選擇的列
3、經常排序、分組的列
4、經常用作連線的列(主鍵/外來鍵)
以下情況儘量不使用索引
1、僅包含幾個不同的值的列(比如表示性別的列,只有男或者女,建立索引就沒意義了)
使用索引後應注意:
1、查詢時減少使用*返回全部列,不要返回不需要的列
2、索引應該儘量小,在位元組數的列上建立索引
3、where 子句中有多個條件表示式時,包含索引列的表示式應置於其它條件表示式之前
4、根據業務資料發生頻率,定期重新生成或重新組織索引,進行碎片整理