1. 程式人生 > >【SQL】索引

【SQL】索引

索引是什麼?

它是與表或者檢視關聯的磁碟上結構,可以加快從其中檢索資料的速度。

索引包含由表或檢視中一列或多列生成的鍵,並把這些鍵儲存在一個結構中,是資料庫可以從多個維度去搜索你需要的資料。

 

為什麼會變快?

沒有索引,查詢資料只能通過遍歷的方式找到自己想要的資料。有了索引之後,我們可以直接鎖定資料的位置。

就像你讀書的時候,沒有目錄,每次看都得從頭開始找,這樣的話,效率是不是很低。

 

主鍵和索引有什麼聯絡和區別嗎?

主鍵可以是表中的一個或是多個欄位,用於唯一標識這一行資料的,就像人的身份證一樣,有很多位,但是沒有任何一個人的身份證號是一樣的。

而索引則是對特定資訊的標識,就像在學校就可以通過學號來快速檢索到你。

其實主鍵相當於表格的索引,我們在建立資料表的時候,會預設id為資料表的主鍵。

小編來解釋:如果主鍵是一行唯一的表示,那麼主鍵構成的資料表就相當於一本書的目錄,而索引則是從不同的角度來給這本書建立目錄,從而使讀書者更快的定位到自己想要閱讀的部分。

 

索引的資料結構?

其實有了索引的資料表儲存的時候,是以“平衡樹”(非二叉)的形式儲存的(有的資料庫也使用雜湊桶作為索引的資料結構),所以我們建立的那些帶有主鍵的表格,從嚴格的意義上來講,它們已經不是表了,它們變成了一種整齊的樹狀結構,此時整個表都變成了一個索引。

這就是我們常見的聚焦索引。

 

聚集索引

所謂的聚集索引:除了目錄本身,字典的正文部分就是一個目錄。比如班級排隊,本身就是按照身高的高矮排列,當你要最高的人的時候,你直接去最後邊找就好,而不用去看班級的人員名單,去檢視每個人的戰隊位置。

非聚集索引

與聚集索引相反,正文就是純粹的正文,沒有任何順序而言,如果你想要找到你要的東西,只能通過目錄去查詢它的位置。

 

它們區別在於,聚焦索引可以查到所需要的資料,而通過非聚焦索引可以查到記錄對應的主鍵值,再使用主鍵值通過聚焦索引查詢需要的資料。所以,能夠找到資料的唯一路徑就是通過主鍵。

 

有什麼不足?

我們每給欄位新增一個索引,欄位對應的資料就會被複制一份出來,生成索引。所以,生成索引會增加表的體積,暫用磁碟儲存空間。

 

什麼時候用?

1.做主鍵

2.主外來鍵連線的列,可以加快連線速度

3.經常需要操作(查詢,排序)的列

 

 

這是小編學習之後一下簡單的總結,如有不足,歡迎大家批評指導!