iT邦幫忙

鐵人檔案

2025 iThome 鐵人賽
回列表
Software Development

PostgreSQL 效能優化 30 天挑戰:從 Index 到 Transaction 的深入探索 系列

這 30 天我將會跟著 PostgreSQL 官方文件,了解 PostgreSQL 中的各種 Index (B-Tree, GIN, Gist ...)、Isolation Levels 以及 Lock 機制。文章內會有各種小測試,來理解它們的使用時機和原理,歡迎對 PostgreSQL 有興趣的朋友們一起來學習~

參賽天數 22 天 | 共 22 篇文章 | 17 人訂閱 訂閱系列文 RSS系列文 團隊籠中鳥
DAY 1

Day 1 - 為什麼挑戰 30 天 PostgreSQL 鐵人賽?

第一次參加鐵人賽,為什麼會選擇資料庫作為主題呢?要從一個菜鳥工程師的故事開始說起,記得剛開始轉職成為後端工程師,工作差不多滿三個月的時候,有一次收到 PM 傳...

2025-09-01 ‧ 由 claudiateng 分享
DAY 2

Day 2 - 使用 Index 提升查詢速度

在資料庫中當資料量變大時,Index 能幫助加速查詢。但剛接觸資料庫的時候,可能會有個疑問:「如果 Index 能讓搜尋變快,那是不是應該對所有欄位都加上 I...

2025-09-02 ‧ 由 claudiateng 分享
DAY 3

Day 3 - PostgreSQL 中的 B-Tree Index

上篇有提到加上 Index 能讓搜尋變快,但能變快的原因是什麼呢?這是因為在 PostgreSQL 中在欄位加上 Index 後,會將該欄的資料長成 B-Tr...

2025-09-03 ‧ 由 claudiateng 分享
DAY 4

Day 4 - Multi-Column Index:順序對效能的影響

在實務上搜尋資料的時候,可能不會像前面的舉例那麼簡單,單純用一個欄位 id 去尋找資料,而是藉由多個欄位的條件去篩選出多筆資料。 像這樣的情況,可能就需要將多...

2025-09-04 ‧ 由 claudiateng 分享
DAY 5

Day 5 - Index Scan 與 Bitmap Scan

在 PostgreSQL 中當查詢使用 Index,我們目前看到了兩種方式:Index Scan 和 Bitmap Scan。 接下來就分別來看看他們各自的特...

2025-09-05 ‧ 由 claudiateng 分享
DAY 6

Day 6 - 如何用 Index 加速 ORDER BY?

在 PostgreSQL 中,B-Tree Index 不僅能加快搜尋速度,還能提升 ORDER BY 查詢的效率。在預設情況下,B-Tree 會以升序(as...

2025-09-06 ‧ 由 claudiateng 分享
DAY 7

Day 7 - UNIQUE Index:確保資料唯一性

接下來要介紹的是 UNIQUE Index,當我們希望一個欄位的值,每個值都是獨一無二的,就可以使用 UNIQUE Index。它可以用來確保這個欄位不會有兩...

2025-09-07 ‧ 由 claudiateng 分享
DAY 8

Day 8 - Expression Index:Index 不只能針對欄位

當查詢結果時不只是單純讀取資料,而是還需要額外做轉換或運算時,效能可能會受到影響。但其實我們可以善用 Index,讓這些轉換在查詢前就先「準備好」,查詢的速度...

2025-09-08 ‧ 由 claudiateng 分享
DAY 9

Day 9 - Partial Index:只幫必要資料加 Index

在資料庫中使用 Index 能夠加快查詢的速度,但前面有提到 Index 加速的做法其實是用「空間換取時間」的方式,因此在設計 table schema 的時...

2025-09-09 ‧ 由 claudiateng 分享
DAY 10

Day 10 - Index-Only Scan:不會碰觸到 Heap 的 Index

在 Day 5 提到的 Index Scan & Bitmap Scan 中,我們知道透過 Index 讀取資料時,通常會有兩個步驟: Index...

2025-09-10 ‧ 由 claudiateng 分享