sql索引的定義以及用法總結
索引定義:SQL Server允許使用者在表中建立索引,指定按某列預先排序,從而大大提高查詢速度(類似於漢語詞典中按照拼音或者字畫查詢)。
索引作用:通過索引可以大大的提高資料庫的檢索速度,提高資料庫的效能。
索引的型別:
1:唯一索引:唯一索引不允許兩行有相同的索引值(其實也就是說唯一索引的這一列,每個值都是唯一的);
例如,如果在stuInfo表中的學員員身份證號(stuID)列上建立了唯一索引,則所有學員的身份證號不能重複。
2:主鍵索引:定義表主鍵的時候,會自動建立主鍵索引(其實主鍵索引就是唯一索引的特例),主鍵索引要求每一個值都是唯一的且非空。
主鍵索引是唯一索引的特殊型別。主鍵索引要求主鍵中的每個值是唯一的。當在查詢中使用主鍵索引時,它還允許快速訪問資料。
3:聚集索引:表中各行的物理順序與鍵值的邏輯順序相同,每個表只能有一個。
在聚集索引中,表中各行的物理順序與鍵值的邏輯(索引)順序相同。表只能包含一個聚集索引。例如:漢語字(詞)典預設按拼音排序編排字典中的每頁頁碼。拼音字母a,b,c,d……x,y,z就是索引的邏輯順序,而頁碼1,2,3……就是物理順序。預設按拼音排序的字典,其索引順序和邏輯順序是一致的。即拼音順序較後的字(詞)對應的頁碼也較大。如拼音“ha”對應的字(詞)頁碼就比拼音“ba” 對應的字(詞)頁碼靠後。
4:非聚集索引:非聚集索引指定表的邏輯順序,資料儲存在一個位置,索引儲存在另一個位置,索引中包含指向資料儲存位置的指標。
如果不是聚集索引,表中各行的物理順序與鍵值的邏輯順序不匹配。聚集索引比非聚集索引(nonclustered index)有更快的資料訪問速度。例如,按筆畫排序的索引就是非聚集索引,“1”畫的字(詞)對應的頁碼可能比“3”畫的字(詞)對應的頁碼大(靠後)。
提示:SQL Server中,一個表只能建立1個聚集索引,多個非聚集索引。設定某列為主鍵,該列就預設為聚集索引
索引的優缺點:
優點:加快訪問速度;
加強行的唯一性
缺點:帶索引的表在資料庫中的儲存需要更多的空間;
建立索引的原則:
下列情況下可以使用索引:
該列頻繁用於搜尋;
該列用於對資料進行排序;
下列情況下避免使用索引:
列中僅僅包含幾個不同的值;
表中僅包含幾行。為小型表建立索引可能不太划算,因為SQLServer在索引中搜索資料所花的時間比在表中逐行搜尋所花的時間更長。