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;得到…