尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

读书笔记:更智能的数据库索引:只关注你需要的数据

读书笔记:更智能的数据库索引:只关注你需要的数据
📅 发布时间:2026/6/20 16:49:20

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

本文为个人学习《Expert Oracle Database Architecture Techniques and Solutions for High Performance and Productivity(第四版本》一书过程中的笔记与理解分享,仅用于学习与交流,部分内容参考原书观点并结合>实际经验进行整理。若涉及版权问题,请联系删除或沟通处理。也请大家支持购买原版书籍。

更智能的数据库索引:只关注你需要的数据

在日常的数据库操作中,我们经常遇到这样的情况:一个庞大的数据表,其中只有一小部分数据是我们真正关心的。比如一个订单表,大部分订单都是“已完成”状态,而我们经常需要快速查找那些“未处理”的订单。

传统的索引方式就像是在图书馆里为每一本书都制作一张索引卡片——无论这本书你是否需要。这不仅浪费空间,还会降低更新效率。

smarter 的索引方案

通过函数索引,我们可以实现“选择性索引”——只为那些我们关心的数据创建索引。这就好比只为你经常查阅的书籍制作索引卡片。

具体做法:

CREATE INDEX processed_flag_idx 
ON big_table(CASE temporary WHEN 'N' THEN 'N' END);

这个索引只会为值为'N'的记录创建索引条目,完全忽略其他值。带来的好处十分明显:

  • 索引大小从 14MB 降至 32KB
  • 索引层级从 3 层减少到 2 层
  • 查询速度更快,维护成本更低

解决复杂业务约束的妙招

函数索引还能巧妙解决一些复杂的业务规则。比如要求:

  • 活跃项目名称必须唯一
  • 非活跃项目名称可以重复

通过一个简单的函数索引就能实现:

CREATE UNIQUE INDEX active_projects_must_be_unique
ON projects(CASE WHEN status = 'ACTIVE' THEN name END);

这个索引只会对活跃项目的名称进行唯一性检查,完全不影响非活跃项目。

使用时要注意的细节

虽然函数索引很强大,但使用时需要注意一些细节。比如在使用 TO_DATE 函数时:

-- 这样会报错
CREATE INDEX t_idx ON t(TO_DATE(year, 'YYYY'));-- 这样可以
CREATE INDEX t_idx ON t(TO_DATE('01'||year, 'MMYYYY'));

原因在于'YYYY'格式的日期会随着当前月份变化,不是确定性的。而'MMYYYY'格式是明确且确定的。

权衡利弊

函数索引虽然会略微影响数据插入和更新的速度,但这种影响通常很小。考虑到:

  • 数据通常只插入一次,但会被查询成千上万次
  • 查询性能的提升远远超过插入时的微小开销

因此,在大多数情况下,使用函数索引都是利远大于弊的。

通过这种智能的索引方式,我们可以让数据库系统更加高效地为我们服务,既能快速查询需要的数据,又不会浪费不必要的存储空间和计算资源。

------------------作者介绍-----------------------
姓名:黄廷忠
现就职:Oracle中国高级服务团队
曾就职:OceanBase、云和恩墨、东方龙马等
电话、微信、QQ:18081072613
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)

提供ORACLE技术支持(系统优化,故障处理,安装升级,数据恢复等) TEL:18081072613,微信、QQ同手机号。

相关新闻

  • 关于天猫精灵喵控的初步拆机研究
  • C++完全攻略:从新手到高手的编程进化之路 - 详解
  • Visual Studio 报错:“9_自定义命令”名称在默认命名空间“9_自定义命令”中无效。请更正项目文件中的 RootNamespace 标记值。

最新新闻

  • 2026 年宜春市厨卫屋顶防水修缮三家横向测评:吉修匠 99.8 分稳居榜首 - 吉修匠
  • 免安装去水印方法,微信里打开就能用 - 工具软件使用方法推荐
  • 佛山精装房改造售后服务哪家好?2026年本地服务品牌推荐 - 优家闲谈
  • 手机电脑端图片去水印工具推荐,高清无损保留原画质 - 工具软件使用方法推荐
  • 微信小程序一键去水印,保存高清视频素材就这么简单 - 爱上科技热点
  • 注销公告登报怎么线上办理?2026这样简单又省心 - 资讯速览

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号