1.什么是索引?
定義:索引是對數據庫表中一列或多列的值進行排序的一種結構
目的:加快對表中記錄的查找或排序
2.索引的類型?
1.唯一索引:唯一索引是不允許其中任何兩行具有相同索引值的索引。
? create unique clustered index myclumn_cindex on mytable(mycolumn)
2.非唯一索引:非唯一索引是相對唯一索引,允許其中任何兩行具有相同索引值的索引
? create index myclumn_cindex on mytable(mycolumn)
3.主鍵索引:數據庫表經常有一列或列組合,其值唯一標識表中的每一行。(主鍵索引是唯一索引的特定類型)
? 主鍵也是一個特殊的索引。與唯一索引的區別,一是主鍵不允許有NULL值而唯一索引可以,二是一個表里只能有一個主鍵但唯一索引卻可以有多個。
4.聚集索引:在聚集索引中,表中行的物理順序與鍵值的邏輯(索引)順序相同。一個表只能包含一個聚集索引 。
3.索引不利的方面
1.創建索引和維護索引要耗費時間,這種時間隨著數據量的增加而增加。
2.索引需要占物理空間,除了數據表占數據空間之外,每一個索引還要占一定的物理空間,如果要建立聚簇索引,那么需要的空間就會更大。
3.當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了數據的維護速度。
4.應該創建索引的列
1、在經常需要搜索的列上
2、在作為主鍵的列上(強制該列的唯一性和組織表中數據的排列結構)
3、在經常用在連接的列上(這些列主要是一些外鍵,可以加快連接的速度)
4、在經常需要根據范圍進行搜索的列上創建索引(因為索引已經排序,其指定的范圍是連續的)
5、在經常需要排序的列上創建索引(因為索引已經排序)
6、在經常使用在WHERE子句中的列上面創建索引(加快條件的判斷速度)
5.不應該創建索引的列:
1、對于那些在查詢中很少使用或者參考的列不應該創建索引
2、對于那些只有很少數據值的列也不應該增加索引。(需要在表中搜索的數據行的比例很大)
3、對于那些定義為text, image和bit數據類型的列不應該增加索引。
4、當修改性能遠遠大于檢索性能時,不應該創建索引。
6.需要注意的
1、考慮已在表上創建的索引數量。最好避免在單個表上有很多索引。
2、檢查已在表上創建的索引的定義。最好避免包含共享列的重疊索引。
3、檢查某列中唯一數據值的數量,并將該數量與表中的行數進行比較。比較的結果就是該列的可選擇性,這有助于確定該列是否適合建立索引,如果適合,確定索引的類型。
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
