DB2中合理使用INCLUDE關鍵字創建索引

DB2中合理使用 INCLUDE 關鍵字創建索引


1. 為何還需要 INCLUDE?——從索引的兩大痛點說起

  • 查詢想“只讀索引不回表”,卻又不想把列都做鍵 → 聯合索引空間膨脹,更新放大
  • 唯一索引定位快,但只能返回鍵列數據 → 仍需 I/O 跳回數據頁。

INCLUDE 的意義就在于:在保持唯一鍵簡潔的同時,再帶幾列數據放進索引葉子頁,讓查詢可以“即取即用”而不訪問表。


2. 三個核心概念先厘清

名稱作用關鍵特征
唯一索引 (UNIQUE)保證列組合全球唯一鍵列全部參與排序與唯一性
聯合索引多列都做鍵列越多,索引頁越大,寫放大越高
INCLUDE將非鍵列復制到葉子頁不排序、不唯一,但可被查詢直接讀取

一句話INCLUDE = “唯一索引 + 列副本”,便于 Index-Only Scan


3. INCLUDE 的語法限制與能力邊界

只有唯一索引能用,并且一次可以帶多個列。

維度Db2 限制說明
可用索引類型CREATE UNIQUE INDEX在非唯一索引上無法使用
可含列數受“索引總列數”上限(64–128 列)鍵列 + INCLUDE 列合計
列參與排序?仍只對鍵列排序
唯一性檢查僅檢查鍵列INCLUDE 列不參與

多列示例

CREATE UNIQUE INDEX idx_order_pkON orders(order_id)                     -- 唯一鍵INCLUDE (customer_id, order_date, amount); -- 三個附加列

4. 典型實戰:主鍵范圍查詢 + 覆蓋字段

SELECT cust_name
FROM   temp.customer
WHERE  cust_num BETWEEN '0007000000' AND '0007200000';
  • 高選擇度主鍵cust_num
  • 額外讀取字段cust_name
索引Timerons存儲
UNIQUE(cust_num) INCLUDE(cust_name)12 338.7
聯合索引 (cust_num, cust_name)12 363.1

洞察:兩者返回速度幾乎相同,但 INCLUDE 版更輕、更易維護,因為 cust_name 不參與排序。


5. 何時用 / 何時不用 INCLUDE ——決策表

場景建議
WHERE 已含唯一鍵,且只取 1–3 個小字段INCLUDE
字段更新頻率高或體積大 (BLOB/CLOB)避免 INCLUDE
需要按附加列排序 / 分組建聯合索引并把排序列放首位
非唯一索引場景無法用 INCLUDE,只能聯合索引

6. 創建示例與常見坑位

CREATE UNIQUE INDEX idx_customer_pkON temp.customer (cust_num)                  -- 鍵列INCLUDE (cust_name, created_at)              -- 多列PCTFREE 10;                                  -- 預留空間

易踩坑

  1. 把大字段放進 INCLUDE ? 索引頁變“胖”,I/O 暴漲。
  2. 把更新頻繁字段放進 INCLUDE ? 每次 UPDATE 都寫索引頁。
  3. 忘記唯一限制 ? 編譯報錯:INCLUDE clause is not allowed for non-unique index

7. 與排序、覆蓋訪問、優化器的協同

  • 覆蓋訪問:只要 SELECT 的列完全落在 鍵列 + INCLUDE 中,優化器偏向 INDEX ONLY SCAN
  • ORDER BY 鍵列:直接輸出,無需再排序;INCLUDE 不幫你排別的列。
  • 統計信息:葉子頁更大 → RUNSTATS 仍要跑,確保基數估計準確。

8. 落地 Checklist

  1. 鎖定高選擇度唯一列
  2. 列清單梳理:讀多寫少 + 體積小 → 入 INCLUDE
  3. 建索引UNIQUE ... INCLUDE(...)
  4. EXPLAIN 確認:出現 INDEX ONLY 即達成目的
  5. 監控寫入:高并發 UPDATE 時觀察頁分裂、鎖競爭
  6. 定期 RUNSTATS:保證優化器基數估算不失真

9. 小結

INCLUDE 為唯一索引添上一層“只讀副本”:

  • 性能:Index-Only,省一次回表 I/O
  • 空間:比聯合索引小得多
  • 維護:附加列不排序,寫放大低

口訣

  • 唯一鍵 + 少量、靜態、小字段 ? 用 INCLUDE
  • 需要排序 / 大字段 / 高頻更新 ? 建聯合索引 或 保留原表

定位好場景、避開陷阱,INCLUDE 就能幫你把“空間-時間比”榨到極致。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/910072.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/910072.shtml
英文地址,請注明出處:http://en.pswp.cn/news/910072.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于Spring Boot的民宿管理系統設計與實現

目錄 一.🦁前言二.🦁開源代碼與組件使用情況說明三.🦁核心功能1. ?算法設計2. ?Spring Boot框架3. ?Vue.js框架4. ?部署項目 四.🦁演示效果1. 管理員模塊1.1 瀏覽后臺首頁1.2 預訂信息管理1.3 入住信息管理1.4 退房信息管理1.…

大數據系統架構實踐(一):Zookeeper集群部署

大數據系統架構實踐(一):Zookeeper集群部署 文章目錄 大數據系統架構實踐(一):Zookeeper集群部署一、Zookeeper簡介二、部署前準備三、部署Zookeeper集群1. 下載并解壓安裝包2. 配置zoo.cfg3. 設置日志目錄…

《道德經》:探尋古老智慧中的哲學之光

我強烈推薦4本可以改變命運的經典著作: 《壽康寶鑒》在線閱讀白話文《欲海回狂》在線閱讀白話文《陰律無情》在線閱讀白話文《了凡四訓》在線閱讀白話文 《道德經》作為道家經典,短短五千言,卻字字珠璣,蘊含著超越時空的哲學智慧。…

科技賦能民生:中建海龍為民生改善注入新動力

在社會發展的進程中,民生改善始終占據著核心地位。住房、基礎設施建設等民生領域的進步,直接關系到民眾的生活質量與幸福感。中建海龍科技有限公司(以下簡稱“中建海龍”)作為建筑行業的創新引領者,憑借其強大的科技實…

BI 賦能,打造數據可視化看板新體驗

BI 賦能,打造數據可視化看板新體驗 引言 在當今數字化時代,數據成為企業決策的重要依據。如何從海量的數據中提取有價值的信息,并以直觀、易懂的方式呈現出來,是企業面臨的重要挑戰。商業智能(BI)工具的出…

vue2設置自定義域名跳轉

需求:首次登錄域名為aa.com,之后登錄系統后在系統內某個模塊設置三級域名為second,之后退出登錄到aa.com,登錄進入系統后域名自動變為second.aa.com,最后退出的域名也是second.aa.com,通過不同的域名配置動態的登錄頁面…

“地標界愛馬仕”再拓疆域:世酒中菜聯袂赤水金釵石斛定義中國GI

“地標界愛馬仕”再拓疆域:世酒中菜聯袂赤水金釵石斛,定義中國GI奢侈品新高度 ——中世國際與貴州斛滿多戰略合作簽約儀式在赤水舉行 赤水市,2025年5月18日——被譽為“地標界愛馬仕”的頂級奢侈品牌世酒中菜 (世界酒中國菜全球…

零基礎、大白話,Vue3全篇通俗療法(上):基礎知識【看得懂】

前言 最近有個小朋友想了解Vue前端技術,但他只懂一些HTML基礎,讓我用最簡單的方式講解。于是就有了這篇面向初學者的博文。 老手請繞行,本文專為新手準備。如果發現用詞不當的地方歡迎留言指正,覺得對新手有幫助的話請收藏點贊。 …

JavaScript性能優化實戰

JavaScript性能優化實戰技術文章大綱 性能優化的重要性 解釋為什么性能優化對用戶體驗和業務指標至關重要討論核心Web指標(LCP、FID、CLS)與JavaScript性能的關系 代碼層面優化 減少DOM操作,使用文檔片段或虛擬DOM避免頻繁的重繪和回流&a…

考研英語作文評分標準專業批改

考研英語作文專業批改經過官方評分標準嚴格對標,徹底改變你的作文提升方式,打開 懂試帝小程序 直達批改。 🎯 批改服務核心優勢 ? 官方標準嚴格對標 完全按照考研英語官方五檔評分制,從內容完整性、組織連貫性、語言多樣性到語…

智能群躍小助手發布說明

1.初次登陸需要授權碼 2.社群維護頁面 3.產品營銷頁面

SAM2論文解讀-既實現了視頻的分割一切,又比圖像的分割一切SAM更快更好

code:https://github.com/facebookresearch/sam2/tree/main demo:https://sam2.metademolab.com/ paper:https://ai.meta.com/research/publications/sam-2-segment-anything-in-images-and-videos/ 這是SAM 這是SAM2 Facebook出品,繼SAM在圖像上分割…

WPF 的RenderTransform使圖標旋轉180°

只是記錄一下思想&#xff1a; 本來想找兩個對稱的圖標給按鈕用&#xff0c;但是另一個找不到&#xff0c;就想到可不可以旋轉180實現另一個圖標的效果&#xff0c;問了一下DeepSeek&#xff1a; <Path Width"30" Height"30" Margin"1"Data…

Matplotlib 繪圖庫使用技巧介紹

目錄 前言 Matplotlib 簡介 快速入門 圖形結構解剖 常用繪圖函數 子圖與布局 單行多列子圖&#xff1a; 網格布局&#xff1a; 自定義位置&#xff1a; 樣式與標注 中文字體與科學計數 圖例、網格、坐標軸 動態圖與動畫 三維繪圖 常見問題與技巧 前言 Matplotli…

【Java基礎算法】1.相向指針練習

??博客主頁:程序員葵安 ??感謝大家點贊????收藏?評論??? 一、兩數之和 Ⅱ(167) 1.1 題目介紹 給你一個下標從 1 開始的整數數組 numbers ,該數組已按 非遞減順序排列 ,請你從數組中找出滿足相加之和等于目標數 target 的兩個數。如果設這兩個數分別是 nu…

“開放原子園區行”太原站:openKylin以開源之力,賦能產業發展

在數字化與智能化浪潮驅動下&#xff0c;開源技術已成為全球科技創新與產業升級的核心引擎&#xff0c;并為培育新質生產力開辟關鍵路徑。為加速開源生態建設&#xff0c;賦能區域經濟高質量發展&#xff0c;由開放原子開源基金會、山西省工業和信息化廳、山西轉型綜合改革示范…

【Elasticsearch】自定義相似性算法

在 Elasticsearch 中&#xff0c;可以通過自定義相似度算法來優化搜索結果的相關性。以下是幾種常見的自定義相似度算法的方法&#xff1a; 1. 使用內置相似度算法 Elasticsearch 默認使用 BM25 算法&#xff0c;但也可以切換到其他內置的相似度算法&#xff0c;如 TF-IDF 或布…

【對比】DeepAR 和 N-Beats

1. DeepAR 1.1 核心思想 提出者&#xff1a;亞馬遜&#xff08;Amazon&#xff09;團隊于2018年提出。目標&#xff1a;針對多變量時間序列進行概率預測&#xff08;Probabilistic Forecasting&#xff09;&#xff0c;輸出預測值的分布&#xff08;如均值、方差、置信區間&a…

Spring Boot單元測試終極指南:從環境搭建到分層測試實戰

Spring Boot測試終極指南&#xff1a;從環境搭建到分層測試實戰 掌握MockMvc與分層測試策略&#xff0c;讓你的代碼質量提升一個維度 一、環境搭建&#xff1a;Maven依賴深度解析 Spring Boot測試的核心依賴在pom.xml中配置如下&#xff1a; <dependencies><!-- 核心…

卷積類型總結

1. 標準卷積 (Convolution) 原理&#xff1a; 一個包含 K 個濾波器的卷積層&#xff08;每個濾波器大小為 FxF x C_in&#xff09;在輸入特征圖上滑動。在每個位置&#xff0c;濾波器與輸入圖像的局部區域進行逐元素相乘再求和&#xff08;點積運算&#xff09;&#xff0c;得到…