Database Index
資料庫索引
資料庫索引是額外的資料結構,可以加快特定查詢、排序或限制條件。它會占用儲存空間,也會增加寫入資料時的工作。
另一個例子
客服系統常依 `tenant_id`、`status` 和 `updated_at DESC` 查詢未結工單。執行計畫顯示,一個複合部分索引能把 p95 從 780ms 降到 24ms。只對 `status` 建索引會找到太多資料,又增加寫入成本,沒有幫助,所以不採用。
主要部分
- 01索引鍵
- 02索引結構與條件
- 03Planner 存取路徑
什麼時候用
針對已量測的查詢、資料表連接、排序、唯一規則或外鍵使用方式建立索引,並用真實資料和執行計畫檢查。
什麼時候不要用
不要每一欄都建立索引,也不要忽略額外的寫入和記憶體成本。應查看執行計畫,不要直接假設索引有被使用。
程式裡的名稱
CREATE INDEX with column order, method, predicate, and measured query plan 上線前要檢查
檢查介面約定、任何情況都不能破壞的規則、授權與輸入限制。測試重試、重複執行只生效一次、逾時與部分失敗。驗證資料完整性、相容性、監控、復原與回復上一版。
預期成果:為這套系統設計或檢查 資料庫索引 (Database Index),並讓資料保持正確、安全且容易維護。 使用者情境:客服系統常依 `tenant_id`、`status` 和 `updated_at DESC` 查詢未結工單。執行計畫顯示,一個複合部分索引能把 p95 從 780ms 降到 24ms。只對 `status` 建索引會找到太多資料,又增加寫入成本,沒有幫助,所以不採用。 技術概念或控制措施:資料庫索引 (Database Index)。 適用理由:針對已量測的查詢、資料表連接、排序、唯一規則或外鍵使用方式建立索引,並用真實資料和執行計畫檢查。 不應使用的情況:不要每一欄都建立索引,也不要忽略額外的寫入和記憶體成本。應查看執行計畫,不要直接假設索引有被使用。 工程要求:定義輸入、輸出、介面約定,以及任何情況都不能破壞的規則。說明授權與輸入檢查範圍。定義失敗、逾時、重試和重複執行只生效一次的規則。也要定義資料搬移與相容限制。 營運要求:加入監控訊號與隱藏敏感資料的記錄。設定容量上限並寫好操作手冊。測試復原與回復上一版的流程。 驗收條件:介面約定與失敗路徑測試通過。重試或部分失敗時,資料與授權規則仍正確。效能上限、監控、復原與回復上一版的方法都已驗證。 證據與限制(證據邊界):它只代表該來源的官方說法。其他平台或團隊可能有不同用法。 待確認:程式執行環境、資料位置、流量形態、資料一致需求和安全邊界。也要確認相容期間、服務目標(SLO)與回復上一版的限制。
檢查這份需求
請 AI 程式助手檢查目前如何使用 資料庫索引 (Database Index)。 定義:資料庫索引是額外的資料結構,可以加快特定查詢、排序或限制條件。它會占用儲存空間,也會增加寫入資料時的工作。 正式環境檢查:檢查介面約定、任何情況都不能破壞的規則、授權與輸入限制。測試重試、重複執行只生效一次、逾時與部分失敗。驗證資料完整性、相容性、監控、復原與回復上一版。 修改程式前,先列出看到的證據、缺口、嚴重程度,以及最小且安全的修正。