oracle添加索引
【oracle添加索引】搞数据库的人都知道,索引这东西属于“双刃剑”。用好了查询秒级响应,用不好不仅没提速,反而拖垮了整个写入事务。在实际生产环境里,大部分性能调优的瓶颈其实都卡在这里。很多人一遇到慢 SQL 就盲目加索引,结果导致回滚段爆满或者空间告急。这里不讲那些基础理论,直接上实操中总结出来的要点和对比,帮你避坑。
核心场景与语法的快速对照
不同业务需求对应的索引类型差异很大。别总拿着 B-tree 万能钥匙开所有的锁,尤其是面对状态码那种只有 0 或 1 的情况,用普通索引纯属浪费资源。下面的表整理了最常见的几种创建策略,基本覆盖了 90% 的日常场景。
| 场景特征 | 推荐索引类型 | 关键字段特征 | 典型写法示例 |
| 大表精确查找 | 普通 B-Tree 索引 | 区分度高、唯一性强 | `CREATE INDEX idx_user_id ON emp(emp_id);` |
| 范围查询/排序 | 前缀复合索引 | 多字段且经常组合查询 | `CREATE INDEX idx_name_area ON dept(dept_name, area_code);` |
| 枚举值极低 | 位图索引 (Bitmap) | 状态字段(如:0/1)、性别等 | `CREATE BITMAP INDEX idx_status ON orders(is_valid);` |
| 函数计算后查询 | 函数索引 (Function-based) | `WHERE UPPER(name)` 或 `TO_DATE(col)` | `CREATE INDEX idx_upper_name ON emp(UPPER(name));` |
| 海量分区数据 | 本地/全局索引 | 大表按时间分区时 | `CREATE INDEX idx_log_date ON log_table(log_time) LOCAL;` |
注意细节: 建索引前先看看数据量。如果一张表才几千行,加索引反而会增加全表扫描的成本;但如果超过百万级且频繁查询,没索引就是死路一条。另外,`NOLOGGING` 选项在大批量初始化导入数据时用能省不少 IO,但恢复能力会受影响,平时 DML 操作别乱开这个开关。
权衡利弊:索引带来的隐形代价
很多开发文档只讲索引怎么带来速度提升,很少提它背后的维护成本。每加一个索引,就意味着每次更新、插入、删除都要多刷几遍磁盘日志。如果你在一个高频写入的流水表上加了太多索引,高峰期 TPS 可能会断崖式下跌。为了直观对比,我把收益和风险做了个对照表,决策时心里要有数。
| 维度 | 增加索引后的变化 | 潜在风险点 |
| 读性能 (Select) | 大幅降低磁盘 IO,避免全表扫描 | 极少数复杂查询可能让优化器选错执行计划 |
| 写性能 (Insert/Update) | 轻微下降,影响随索引数量线性增长 | 频繁的 Redo Log 生成可能导致归档日志堆积 |
| 存储空间 | 占用额外的表空间 | 历史数据清理不及时会导致空间碎片化严重 |
| 维护成本 | 需定期统计信息收集 | 高负载下索引维护可能触发锁等待或阻塞其他事务 |
最后提醒一句,索引不是建完就万事大吉的。隔一段时间要用 `DBMS_STATS.GATHER_TABLE_STATS` 重新收集一下统计信息,防止 CBO 基于错误的数据行数走了全表扫描。如果发现某个索引连续两周都没有被使用过,建议果断删掉,给系统减减负。
免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!
-
【如何彻底屏蔽微信群】在日常使用微信的过程中,用户可能会遇到一些不想接收消息的微信群,比如广告群、骚扰...浏览全文>>
-
【自制薯片的做法微波炉】在快节奏的生活中,很多人喜欢在家尝试制作简单又美味的小吃。自制薯片就是一个不错...浏览全文>>
-
【汉字银的组词】“银”是一个常见的汉字,具有丰富的含义和多样的用法。在日常生活中,“银”不仅指一种金属...浏览全文>>
-
【手机电池一会充满一会没电了怎么办】当手机电池出现“一会儿充满,一会儿没电”的情况时,往往会让用户感到...浏览全文>>
-
【五谷豆浆的配料和做法】五谷豆浆是一种营养丰富、口感醇厚的传统饮品,适合早餐或日常饮用。它以多种谷物为...浏览全文>>
-
【喀左有好玩的地方吗】喀左,全称“喀喇沁左翼蒙古族自治县”,位于辽宁省朝阳市,是一个历史悠久、民族文化...浏览全文>>
-
【怎么让qq空间上锁】QQ空间作为腾讯推出的一个个人社交平台,承载了大量用户的生活点滴和私人信息。为了保护...浏览全文>>
-
【闻说的注音是什么】2 在日常学习和使用中文的过程中,很多人会遇到一些不常见的词语,尤其是古文或方言中...浏览全文>>
-
【猎人斯坦索姆拉怪教程】在《魔兽世界》中,猎人是一个非常灵活且具有高输出的职业,尤其在副本中,猎人可以...浏览全文>>
-
【千与千寻的角色都有原型吗】《千与千寻》是宫崎骏执导的一部经典动画电影,自2001年上映以来,深受全球观众...浏览全文>>
