一篇數據庫索引核心知識點,帶你全方位瞭解索引原理與優化

數據庫索引原理

索引的目的在於提高查詢效率,索引就像是書的目錄,是與表或視圖關聯的磁盤上結構,可以加快從表或視圖中檢索行的速度。 索引的原理在於使用空間換時間,索引會將建立的索引KEY存儲在N叉樹(BTree)。BTree適合在磁盤存儲設備上組織動態查找表,這些數據結構以某種方式引用(指向)數據。

磁盤IO預讀

計算機操作系統考慮到磁盤IO操作的高昂代價,當一次IO操作時,會把當前磁盤頁和相鄰的數據也讀取到內存緩存區。

索引的結構數據

索引是使用B+樹實現的數據結構。


一篇數據庫索引核心知識點,帶你全方位瞭解索引原理與優化

image.png

每個磁盤塊包含:數據項(藍色)、指針(黃色);非葉子節點只不存儲真實的數據,只存儲指引搜索方向的數據項,真實的數據存儲在葉子結點。P1指向小於17的磁盤塊,P2指向17和35之間的磁盤塊,P3表示大於35的磁盤塊。

二叉樹

二叉查找樹是一種查找效率非常高的數據結構,二叉查找樹的結構不適合數據庫,因為它的查找效率與層數相關。它有三個特點。

  1. 每個節點最多隻有兩個子樹。
  2. 左子樹都為小於父節點的值,右子樹都為大於父節點的值。
  3. 在n個節點中找到目標值,一般只需要log(n)次比較。

BTree樹

這種數據結構,非常有利於減少讀取硬盤的次數。假定一個節點可以容納100個值,那麼3層的B樹可以容納100萬個數據。


一篇數據庫索引核心知識點,帶你全方位瞭解索引原理與優化

image.png

B樹的特點也有三個。

  1. 一個節點可以容納多個值。比如上圖中,最多的一個節點容納了4個值。
  2. 除非數據已經填滿,否則不會增加新的層。也就是說,B樹追求"層"越少越好。
  3. 子節點中的值,與父節點中的值,有嚴格的大小對應關係。

數據庫索引設計與優化文檔目錄

第1章 概述

一篇數據庫索引核心知識點,帶你全方位瞭解索引原理與優化

簡短的概述

第2章 表和索引結構

一篇數據庫索引核心知識點,帶你全方位瞭解索引原理與優化

第3章 SQL處理過程

一篇數據庫索引核心知識點,帶你全方位瞭解索引原理與優化

第4章 為SELETE語句創建理想的索引

一篇數據庫索引核心知識點,帶你全方位瞭解索引原理與優化

第5章 前瞻性的索引設計

一篇數據庫索引核心知識點,帶你全方位瞭解索引原理與優化

第6章 影響索引設計過程的因素

一篇數據庫索引核心知識點,帶你全方位瞭解索引原理與優化

第7章 被動式索引設計

一篇數據庫索引核心知識點,帶你全方位瞭解索引原理與優化

第8章 為表連接設計索引

一篇數據庫索引核心知識點,帶你全方位瞭解索引原理與優化

第9章 星型連接

第10章 多索引訪問

一篇數據庫索引核心知識點,帶你全方位瞭解索引原理與優化


第11章 索引和索引重組

一篇數據庫索引核心知識點,帶你全方位瞭解索引原理與優化

第12章 數據庫管理系統相關的索引限制

第13章 數據庫索引選項

一篇數據庫索引核心知識點,帶你全方位瞭解索引原理與優化

第14章 優化不是完美的

一篇數據庫索引核心知識點,帶你全方位瞭解索引原理與優化

第15章 其他估計事項

第16章 組織索引設計過程

一篇數據庫索引核心知識點,帶你全方位瞭解索引原理與優化


一篇數據庫索引核心知識點,帶你全方位瞭解索引原理與優化

資料資料方式:

轉發+關注後私信 【 MySQL】免費獲取

一篇數據庫索引核心知識點,帶你全方位瞭解索引原理與優化


分享到:


相關文章: