簡單易懂的索引原理

NearTheShore發表於2020-04-07

關於聚集索引

沒有加主鍵的資料表,資料是一行一行無序整齊的存放在儲存器之中,如果增加主鍵,也就是所謂的聚集索引,則會變成棵平衡樹,【整個】資料表的結構從【無序表格】變成一棵【平衡樹(B tree(-p1)】,所以一個表只能有一個聚集索引
注:-p1:左節點小於右節點,等於當前節點則命中,小於走左子節點,大於走右子節點知道找到符合的節點值,如果沒有則認為無節點)

關於非聚集索引

非聚集索引不改變整個表的結構,而是將指定的索引欄位的值構建為一棵單獨的平衡樹,每給一個欄位建立一個索引,就會把【欄位中的值】複製出來建立一棵樹,會增加表的體積佔用磁碟空間,查詢時,會在現在這棵單獨的平衡樹中查詢,到符合資料的主鍵,再使用主鍵的值去聚集索引中查詢資料行

關於大O計算公式

假如一張表有N條資料 ,最壞的情況要匹配N次才能得到結果,用大O標記法就是O(n)最壞時間複雜度, 這N次匹配在不經快取優化的情況下就是N次IO開銷。
如果把這張錶轉換成平衡樹結構,假設這棵樹有10層,那麼只需要10次IO開銷就能查詢到所需要的資料, 速度以指數級別提升,用大O標記法就是O(log n),n是記錄總樹,底數是樹的分叉數,結果就是樹的層次數。用公式來表示就是

簡單易懂的索引原理

本作品採用《CC 協議》,轉載必須註明作者和本文連結

Reflection.

相關文章