百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

重新思考索引:数据库索引现代化的路径

qihemm 2025-07-25 23:08 5 浏览 0 评论

索引是数据库性能的基础,但它们常常被视为“设置后就不再理会”的结构。随着数据环境的演变,包括混合云部署、实时分析和机器学习工作负载的出现,我们的索引策略也必须随之调整。

事实上,随着技术进步和数据量激增,十年前或二十年前行之有效的索引策略如今可能已不再是最优的。造成这一现象的原因多种多样,包括数据库管理系统为提升索引性能而进行的改进(如新增索引类型和选项),以及应用程序编写和维护方式的变革。让我们探讨这些问题,并揭示数据库应用中索引现代化的迫切需求。

我们继承的索引

坦白说:我们环境中的许多索引并不是经过精心设计的,它们是被继承下来的,或是为了快速解决性能问题而添加的,或是为了满足临时访问路径而创建的。随着应用程序的变更和数据模式的演变,这些遗留索引可能变得无关紧要、冗余,甚至有害。

现代化始于意识觉醒。问自己:这个索引为何存在?如果你无法自信地回答,是时候深入挖掘了。查询负载会变化。十年前的优化访问路径可能已不再适用。

冗余和重叠索引

消除冗余索引是现代化的一大机遇。你的数据库管理系统(DBMS)平台允许你定义多个索引,这些索引可能重叠或以不同方式覆盖同一列,但这仅仅因为你可以这样做,并不意味着你应该这样做。

考虑以下场景:

  • 一个索引在 (LASTNAME, FIRSTNAME) 上

  • 另一个在 (LASTNAME) 上

第二个索引在功能上是冗余的。第一个索引涵盖了第二个索引可以支持的所有查询——以及更多。保留两个索引会不必要地增加每次插入、更新和删除操作的成本。

也许第二个索引是主键的唯一索引,而第二个索引是为了提升性能。在这种情况下,你不能简单地删除第二个索引。相反,如果你的数据库管理系统支持索引包含列,你可以将FIRSTNAME列包含在第二个唯一索引中,而无需将其作为实际索引键的一部分。这样,通过使用可能更新的功能(包含),你可以消除冗余索引并提升性能。

聚簇和压缩考虑

现代化不仅仅是删除。它还涉及更智能地重建。聚簇索引影响物理数据布局,而不良的聚簇可能会降低性能。作为现代化的一部分,审查聚簇索引是否仍与主要访问路径匹配。

此外,新的索引压缩技术(在某些数据库管理系统如Db2中可用)可以节省空间并减少I/O。如果您仍然只使用数据页压缩而未探索索引页压缩,您将错过潜在的CPU和存储节省——尤其是在高基数索引中,其中包含大量重复值。

采用现代索引类型

每个现代数据库管理系统(DBMS)都会在其产品的新版本和新发布中提供新的和改进的功能。作为这些发布的一部分,许多改进已经实现,提供了更先进的索引类型和改进的索引维护功能。基于表达式的列上的索引、对更大索引键的支持以及更好的内联维护选项意味着您可以设计更智能的索引,更好地服务于分析查询和事务性工作负载。

数据库管理员(DBA)的角色

索引现代化并非一次性任务,而应纳入持续的索引生命周期管理策略。当今的DBA必须:

  • 自动化索引分析与优化

  • 与开发人员协作以理解查询需求

  • 将索引使用跟踪集成到持续集成/持续交付(CI/CD)管道中

  • 监控新应用程序对现有访问路径的影响

要有效分析和现代化索引策略,需要捕获并分析现有SQL以构建更有效的索引模型。为此,索引分析工具可帮助减少手动步骤,并构建必要的基础设施和脚本以有效审查运行中的SQL语句。

您应该捕获一段时间内的所有SQL使用情况,该时间段需足够长以涵盖您运行的最重要应用程序和查询的横截面。同时,您需要将这些信息与数据库管理系统(DBMS)系统目录和查询计划详细信息进行集成。利用这些信息,您可以进行分析以确定现有索引的类型,以及可能需要创建的索引。

您需要考虑的因素包括未使用的索引、统计信息缺失或过时的索引、具有重叠键列的索引、重复索引、索引过多的表、外键索引不完整的表、没有聚集索引的表,以及完全没有索引的表。

在审查和分析系统后,您可以决定保留哪些索引以及创建哪些索引。务必为应用程序性能的“前后对比”建立基线。然后,您可以通过访问路径、CPU 节省和其他“成本因素”来确定新索引对应用程序的影响,以及哪些应用程序从新索引中获益最多。

索引并非被动结构,它们是主动的性能工具。但就像任何工具一样,如果不维护和现代化,它们会随着时间的推移而“生锈”。

最终思考

索引现代化并非盲目淘汰旧有索引,而是通过数据驱动的分析确保索引与当前及未来的工作负载需求保持一致。在当今动态环境中,臃肿且过时的索引策略可能成为性能和可扩展性的隐形杀手。

随着数据量增长和业务需求增加,采取战略性索引现代化方法将成为提高数据库环境的关键差异化因素。

作者:Craig S. Mullins

相关推荐

VLOOKUP的18种高阶用法大公开!99%的人都不知道的神操作!

作为被头条用户催更的Excel课代表,今天带来让HR追着要模板、让老板主动加薪的VLOOKUP终极指南!从基础到高阶一网打尽,文末送36个行业专用模板!一、为什么你的VLOOKUP总报错?血泪大数据...

Vlooup公式,2种模糊查找匹配,1分钟学会

工作中,VLOOKUP公式使用频率是很高的,用来各种查找匹配问题今天我们分享两种模糊查找匹配问题,一种是文本的模糊查找匹配,一种是数字的模糊查找匹配问题1、文本模糊查找匹配使用模拟数据举个例子,原始数...

与vlookup功能相似的函数,照样搞定表格数据查询,简单还实用

在日常表格数据处理工作,说到数据查询,很多小伙伴首先想到的是Vlookup函数,老师的教程中也多次讲到Vlookup函数的用法和实例。其实在Excel中还有其他的数据查询函数公式或技巧,今天我们先来学...

别再折腾VLOOKUP了!DGET逆向查找10秒通关,小白必看

今天要掀翻一个“过气网红”——VLOOKUP!你是不是也经历过这些崩溃瞬间:逆向查找要交换列顺序,复制粘贴到手软!多条件查找要嵌套MATCH,公式长到怀疑人生!别忍了!今天教你用DGET函数一键封...

职场新人必学!VLOOKUP函数10分钟速成指南

正文:"今天来讲解办公人入职期初函数VLOOKUP,这是所有职场人最重要也是最基础的技能。掌握它,90%的数据查找再不用求人!特别献给刚入职场的你——别让Excel成为加班理由。"——...

巧用Vlookup函数揪出“第三者”(vlookup第三个参数是什么)

在一张Excel表格的重复记录中,让你快速列出每种不同物品第2次或第n次出现的记录,你会怎么做?Vlookup函数就有这个本事。举例来说,产品或者物流表格中往往会记录有同一货物的多笔数据(如下图的今日...

分享12个VLOOKUP超经典用法(vlookup通俗易懂)

刚毕业那会,面试的时候经常会被问到会不会用Excel?我就理直气壮地回答:“会啊。”毕竟,简历上可是写着熟练。接着面试官扔出一句“那你会VLOOKUP吗?”我还是会一口咬定:“我会。“其实,我都没用过...

查找匹配别只知道Vlookup,Sumifs也可以!

工作中遇到查找匹配问题的时候,大家第一反应是不是都想到的Vlookup公式呢,有没有小伙伴们给Sumifs一点点机会的呢,有时候Sumifs比Vlookup更好用1、Vlookup公式举个例子,左边是...

Excel函数讲解:VLOOKUP函数,轻松玩转数据查找

常用函数系列教学:VLOOKUP函数讲解(46)。不懂VLOOKUP函数怎么高效查找数据?闲话少叙直接开讲。基本含义:VLOOKUP函数用于在表格按垂直方向(到)上查找返回行数据。如何使用及注意事项?...

CHOOSEROWS+CHOOSECOLS原来是一个超级查找函数组合!

场景一:要在学生名册中,抽查一名学生成绩。公式:=CHOOSEROWS(A1:D5,2)解析:第一参数A1:D5为数据区域,第二参数2表示提取第2行数据。把数据区域改为A2:D5,结合RANDBETW...

数据查询不止有vlookup函数,自定义zlookup函数查询操作更高效

Excel数据查询,相信大家首先会想到vlookup函数。毋庸置疑vlookup函数在Excel数据查询中作用是非常的强大。但是它也有一些不能实现的数据查询。如上图所示,我们需要根据人员的出现次数,提...

「EXCEL进阶」VLOOKUP函数怎么查询一个值返回多个结果

前言:VLOOKUP函数一般一次只能返回一个结果,本例介绍通过辅助列的方法使VLOOKUP函数查询一个值,返回这个值对应的多个结果。使用场景举例:根据表格中同一数值,返回对应值的多个结果。比如这张数据...

WPS查找能手VLOOKUP函数使用方法讲解

各位同学好!今天我们来深度剖析WPS最实用的查找工具——VLOOKUP函数。这个函数能帮你在表格中快速定位并提取所需数据,可以帮你快速核对两批数据差异,还可以合并多个表格的关联信息,甚至可以帮你制作动...

Excel常用10个函数:跨表查找Vlookup,适用于大数据中查找精确值

Hello大家好,我是Office米,今天,我们将和大家一起分享交流,常用的10个函数之一:查找引用函数VLOOKUP。在说VLOOKUP函数之前,我们要先了解,平时Excel日常工作中会遇到哪些问题...

掌握了这个套路,无论用 Excel vlookup 函数查找第几次结果都很轻松

用vlookup查找默认情况下是一对一出结果,如果要一对多查找,就需要用到各种技巧,具体方法我写过非常多了,可以搜索一下历史记录。只要掌握了今天这个套路,无论你想查找第几次重复值,都易如反掌。案例...

取消回复欢迎 发表评论: