1. 程式人生 > 資料庫 >SQL Server 索引

SQL Server 索引

是對錶中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定資訊。

         索引的一個主要目的就是加快檢索表中資料,亦即能協助資訊搜尋者儘快的找到符合限制條件的記錄ID的輔助資料結構。

         SQL Server 中索引主要分為 聚集索引(Clustered)和 非聚集索引(Non-clustered)

 

聚集索引(Clustered):

        1、表中各行的物理順序與鍵值的邏輯(索引)順序相同,每個表只能有一個
        2、主鍵索引:為表定義一個主鍵將自動建立主鍵索引,主鍵索引是唯一索引的特殊型別
        3、主鍵索引要求主鍵中的每個值是唯一的,並且不能為空

 

非聚集索引(Non-clustered):

       1、非聚集索引指定表中的邏輯順序
       2、資料儲存在一個位置,索引儲存在另一個位置,索引中包含指向資料儲存位置的指標
       3、可以有多個,小於249個
       4、唯一索引:唯一索引不允許兩行具有相同的索引值

 

開發過程中,主要講的是非聚集索引

建立非聚集索引的原則:

     1、頻繁搜尋的列
     2、經常用作查詢選擇的列
     3、經常排序、分組的列
     4、經常用作連線的列(主鍵/外來鍵)

以下情況儘量不使用索引
     1、僅包含幾個不同的值的列(比如表示性別的列,只有男或者女,建立索引就沒意義了)

     2、表中僅包含幾條資料(表中就幾條資料,怎麼查都很快,沒必要索引)

 

使用索引後應注意:

     1、查詢時減少使用*返回全部列,不要返回不需要的列
     2、索引應該儘量小,在位元組數的列上建立索引
     3、where 子句中有多個條件表示式時,包含索引列的表示式應置於其它條件表示式之前
     4、根據業務資料發生頻率,定期重新生成或重新組織索引,進行碎片整理