資料結構:索引(Index)

閱讀時間約 5 分鐘

本篇是自學筆記,若有錯誤拜託要跟我說!

索引其實是一種資料結構(Data structure),但我們摸不到。索引類似於書的目錄,是用來加速資料庫查詢的結構。索引會建立指標(Pointer)指向資料所在的物理位置,避免逐行掃描整個資料表(Full Table Scan ),提高查詢效率。

索引的基本原理:

    • 索引條目包含了 Key 和 指標(Pointer)。
    • 指標指向資料所在的 Block。
    • 索引和資料(Data File)通常分別存放,資料庫系統會根據索引快速找到對應的資料。

索引類型

Primary Index(主索引)

    • 定義:用 Primary Key 建立的索引,Primary Key 保證唯一性,索引條目和資料行一對一對應。
    • 特點:Primary Index 和資料是物理排序一致的。每個資料表只能有一個 Primary Index。
    • 比喻:書的主要目錄,對應每一頁的具體位置。如下圖每個 Pointer 會指向區塊,當我想到 1002 就進入 1001 跟 1005 中間搜尋即可。
raw-image

資料來源:Primary Indexing in Databases 

Primary Index 的兩個類型

  1. Dense Index(密集索引)
    • 定義:為資料表中每一筆資料都建立索引條目。
    • 特點:索引條目完整覆蓋整個資料表。適合小型資料表,但隨資料量增長索引也會膨脹。
    • 比喻:書中每一章、每一節都列入目錄。
  2. Sparse Index(稀疏索引)
    • 定義:只為部分資料建立索引條目,通常是分區點(例如每隔幾頁建立一條)。
    • 特點:減少索引條目數量,適合排序好的大資料表。
    • 比喻:書中只為重要章節(如第 1、5、10 章)建立目錄。

Secondary Index

用來補充 Primary Index 的不足。

    • 定義:為非 Primary Key 的欄位(如 Foreign Key、 頻繁查詢的欄位)建立的索引。
    • 特點:Secondary Index 不改變資料的物理排序。刪除不影響
    • 比喻:類似一本書的副目錄,可以按照不同分類快速定位內容。像是單字書可以用 A-Z 建索引,也有副目錄以大考出現頻率或是主題建索引。

索引結構:B-Tree 有索引就可以用二元搜尋的方式查找

索引通常以 B-TreeB+Tree 資料結構運作:

理解進階資料結構(一):B樹 |B+樹


Clustered Index v.s. Non-clustered Index

  1. Clustered Index(叢索引)
    • 定義:資料表的資料會根據索引的 Key 順序排列,索引條目和資料是一體的。
    • 特點:每個資料表只能有一個 Clustered Index。適合範圍查詢,但插入/刪除效率較低。
    • 比喻:書的目錄和內容緊密排列在一起。索引照1~10排,實體的資料也是1~10。
  2. Non-clustered Index(非叢索引)
    • 定義:索引條目和資料分離,索引只包含指向資料的指標。
    • 特點:一個表可以有多個 Non-clustered Index。適合隨機查詢,但範圍查詢效率較低。
    • 比喻:書的目錄和內容分開,目錄指向書櫃中的具體書籍位置。例如:「主題:人工智慧,對應到第 50 頁」。你需要找到索引知道頁碼,然後去翻到書的第 50 頁找到內容。
    • 適合精確的搜尋,例如找到特定的名字
raw-image

如果 ID 是 Clustered Index:

  • 資料在硬碟上的存放順序會按照 ID 排列,例如:
    • 第一筆資料存放 Alice(ID=1)。
    • 第二筆資料存放 Bob(ID=2)。
    • 物理存放順序就是 1 → 2 → 3 → 4。

如果建立一個按「部門」的 Non-clustered Index:

  • 索引會是這樣的結構:
    • IT → 指向 Alice 和 Cindy 的位置。
    • HR → 指向 Bob 的位置。
    • Finance → 指向 Dave 的位置。
  • 但資料實際的存放順序並不改變,依然是按 ID 排列 1 → 2 → 3 → 4

總結

  • 索引提高查詢效率,但可能帶來維護成本(如插入、更新資料時需要同步更新索引)。
  • 索引設計要點:
    • Primary Index 用於關鍵性查詢。
    • Secondary Index 提供額外的靈活性。
    • 根據需求選擇 Dense 或 Sparse Index。
    • Clustered 索引適合範圍查詢,Non-clustered 索引適合多條件查詢。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
本篇文章是作者自學 SQL 的筆記,詳述資料庫中的四種主要語言類別:DDL、DML、TCL 及 DCL,每類別對應的功能與常見操作一一列舉,並深入探討交易的特性及其 ACID 原則。此外,文章還解釋了資料庫的正規化及反正規化的必要性,對於學習 SQL 的讀者有很大的幫助。
本文將逐步拆解如何將 ER 圖轉換為 Schema,深入瞭解 ER 圖的意義以及其對於資料庫設計的重要性。透過影片內容,我們可以學習如何清晰地描述實體關係,並將複雜的資料結構轉化為易於管理的 Schema 形式。無論是初學者或有經驗的資料庫管理者,都能從中獲得實用的技巧和知識。
本文探討資料庫設計的基本概念,區別了 Flat-file 和 Database,並詳細介紹了資料庫設計的流程,包括需求分析、ER 圖概念設計、邏輯資料模型和物理模型的轉換。還介紹了關聯式資料庫的基本組成、五大鍵以及各種限制,希望對自學者理解資料庫設計有所幫助。
前一篇提到B樹和B+樹,這篇介紹AVL 樹和經典的紅黑樹。 在開始之前,可以看個輕鬆的影片,對於紅黑樹在真實商業案例的應用更有印象 學習資料結構、演算法在工作上真的有用嗎? 實際工作經歷不藏私! | 二元樹 | 雜湊 | 計算機概論 | 工程師 Nic
本文詳細介紹了雜湊表(Hash Table)及雜湊函數(Hash Function)的運作原理與應用,如何解決衝突(Collision)問題,並引入字典樹(Trie)作為另一種資料搜尋結構。透過簡單易懂的比喻和實例,幫助讀者理解這些資料結構的效能和實際用途。
樹是資料結構中的核心概念,尤其是當數據量龐大時,選擇適當的樹結構能顯著提升查找和管理效率。本文深入探討了B樹、B+樹、AVL樹及紅黑樹的特性、操作方法及其廣泛應用,並強調選擇自平衡樹的必要性,以確保資料讀取的快速與精確。本文也鼓勵讀者通過動畫學習以便更好地理解這些複雜的樹結構。
本篇文章是作者自學 SQL 的筆記,詳述資料庫中的四種主要語言類別:DDL、DML、TCL 及 DCL,每類別對應的功能與常見操作一一列舉,並深入探討交易的特性及其 ACID 原則。此外,文章還解釋了資料庫的正規化及反正規化的必要性,對於學習 SQL 的讀者有很大的幫助。
本文將逐步拆解如何將 ER 圖轉換為 Schema,深入瞭解 ER 圖的意義以及其對於資料庫設計的重要性。透過影片內容,我們可以學習如何清晰地描述實體關係,並將複雜的資料結構轉化為易於管理的 Schema 形式。無論是初學者或有經驗的資料庫管理者,都能從中獲得實用的技巧和知識。
本文探討資料庫設計的基本概念,區別了 Flat-file 和 Database,並詳細介紹了資料庫設計的流程,包括需求分析、ER 圖概念設計、邏輯資料模型和物理模型的轉換。還介紹了關聯式資料庫的基本組成、五大鍵以及各種限制,希望對自學者理解資料庫設計有所幫助。
前一篇提到B樹和B+樹,這篇介紹AVL 樹和經典的紅黑樹。 在開始之前,可以看個輕鬆的影片,對於紅黑樹在真實商業案例的應用更有印象 學習資料結構、演算法在工作上真的有用嗎? 實際工作經歷不藏私! | 二元樹 | 雜湊 | 計算機概論 | 工程師 Nic
本文詳細介紹了雜湊表(Hash Table)及雜湊函數(Hash Function)的運作原理與應用,如何解決衝突(Collision)問題,並引入字典樹(Trie)作為另一種資料搜尋結構。透過簡單易懂的比喻和實例,幫助讀者理解這些資料結構的效能和實際用途。
樹是資料結構中的核心概念,尤其是當數據量龐大時,選擇適當的樹結構能顯著提升查找和管理效率。本文深入探討了B樹、B+樹、AVL樹及紅黑樹的特性、操作方法及其廣泛應用,並強調選擇自平衡樹的必要性,以確保資料讀取的快速與精確。本文也鼓勵讀者通過動畫學習以便更好地理解這些複雜的樹結構。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
商業簡報不僅僅是呈現數據,更需要深入瞭解數據分析及有效的工具運用。本文探討於Excel中使用不同函數來改善數據處理效率,包括IF、IFS、VLOOKUP、XLOOKUP及INDEX與MATCH的結合,幫助商業人士更好地從數據中提取洞見,助力業務增值,學習優化數據分析過程,讓您的商業簡報更具影響力。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
※ 關聯式資料庫(RDBMS)是什麼? 關聯式資料庫(RDBMS)是一種傳統的資料庫系統,以結構化查詢語言(SQL)為基礎,將資料儲存於預定義的表格中。這些表格包括行和列,彼此之間存在明確的關聯性。 ※ 關聯式資料庫(RDBMS)有兩個重要元素: 關聯(Relational): 關聯式資料庫
Thumbnail
高效生活,幫助你找回更多自己的時間 歡迎來到 AL 的 Googlesheet 學習筆記系列文章。在這個系列中,我們將一步步介紹各種函數,並將它們應用於日常生活中,加速工作、提高效率。 今天要介紹的是使用 Index 、 Counta 函數尋找最後一列的資料!
Thumbnail
在POWER QUERY從0到1 #9 樞紐資料行的功能是將長資料轉換成寬資料,使數據可以快速分析。 而所謂的取消資料行樞紐,就是把寬資料轉換成長資料的一個過程,也就是資料的正規化。 如下圖所示,左邊的圖為二維結構,屬於寬資料,每列可能包含多筆數據(1.2.3月),右邊的圖屬於長資料,每列都
Thumbnail
這邊統整了所有過去發表過關於 QUERY 函式的教學分享,希望可以方便你按照順序閱讀和練習。 QUERY 可以用來查詢、篩選、聚集、排序資料,還可以做張簡易的資料透視表,是我在 Google 試算表上做數據分析、製作報告、製作儀表板時最常用的函式之一,既方便又好用,誠心推薦!
Thumbnail
你是否曾經遇到這樣的情況?手上有一張表格,需要根據某個欄位進行分類,但表格又很繁雜,如果手動一個個查找,就需要花費大量時間才能找到想要的資料,這樣實在是太沒效率又容易眼花。 今天,我就來教你一個FILTER 函數快速分類技巧,讓你輕鬆掌握數據,節省時間。
Thumbnail
POWER QUERY樞紐資料行這個功能其實跟EXCEL的樞紐相似度大約90%,但是使用方式有點不太相同。 那樞紐到底是什麼東東呢? 其實樞紐就是將一維表轉成二維表,或者有人說將長資料轉成寬資料,那什麼是長資料什麼是寬資料呢? 長資料 資料中不論有多少欄,每一列只有一筆數據,長資
※什麼是資料 : 說明: 「資料」(information/data) 是網路應用程式的核心。 使用者分享的照片、電商販賣的產品,或是搜索引擎提供的餐廳評價都是資料。 主要特徵: 生活中任何基本的事實 (fact) 或是值 (value) 都可以被稱為資料。例如:你的名字、你的生日。 因
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
商業簡報不僅僅是呈現數據,更需要深入瞭解數據分析及有效的工具運用。本文探討於Excel中使用不同函數來改善數據處理效率,包括IF、IFS、VLOOKUP、XLOOKUP及INDEX與MATCH的結合,幫助商業人士更好地從數據中提取洞見,助力業務增值,學習優化數據分析過程,讓您的商業簡報更具影響力。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
※ 關聯式資料庫(RDBMS)是什麼? 關聯式資料庫(RDBMS)是一種傳統的資料庫系統,以結構化查詢語言(SQL)為基礎,將資料儲存於預定義的表格中。這些表格包括行和列,彼此之間存在明確的關聯性。 ※ 關聯式資料庫(RDBMS)有兩個重要元素: 關聯(Relational): 關聯式資料庫
Thumbnail
高效生活,幫助你找回更多自己的時間 歡迎來到 AL 的 Googlesheet 學習筆記系列文章。在這個系列中,我們將一步步介紹各種函數,並將它們應用於日常生活中,加速工作、提高效率。 今天要介紹的是使用 Index 、 Counta 函數尋找最後一列的資料!
Thumbnail
在POWER QUERY從0到1 #9 樞紐資料行的功能是將長資料轉換成寬資料,使數據可以快速分析。 而所謂的取消資料行樞紐,就是把寬資料轉換成長資料的一個過程,也就是資料的正規化。 如下圖所示,左邊的圖為二維結構,屬於寬資料,每列可能包含多筆數據(1.2.3月),右邊的圖屬於長資料,每列都
Thumbnail
這邊統整了所有過去發表過關於 QUERY 函式的教學分享,希望可以方便你按照順序閱讀和練習。 QUERY 可以用來查詢、篩選、聚集、排序資料,還可以做張簡易的資料透視表,是我在 Google 試算表上做數據分析、製作報告、製作儀表板時最常用的函式之一,既方便又好用,誠心推薦!
Thumbnail
你是否曾經遇到這樣的情況?手上有一張表格,需要根據某個欄位進行分類,但表格又很繁雜,如果手動一個個查找,就需要花費大量時間才能找到想要的資料,這樣實在是太沒效率又容易眼花。 今天,我就來教你一個FILTER 函數快速分類技巧,讓你輕鬆掌握數據,節省時間。
Thumbnail
POWER QUERY樞紐資料行這個功能其實跟EXCEL的樞紐相似度大約90%,但是使用方式有點不太相同。 那樞紐到底是什麼東東呢? 其實樞紐就是將一維表轉成二維表,或者有人說將長資料轉成寬資料,那什麼是長資料什麼是寬資料呢? 長資料 資料中不論有多少欄,每一列只有一筆數據,長資
※什麼是資料 : 說明: 「資料」(information/data) 是網路應用程式的核心。 使用者分享的照片、電商販賣的產品,或是搜索引擎提供的餐廳評價都是資料。 主要特徵: 生活中任何基本的事實 (fact) 或是值 (value) 都可以被稱為資料。例如:你的名字、你的生日。 因