在数据库 OLTP(联机事务处理) 场景中,之所以“需要索引”,本质上是因为:OLTP 以大量、频繁、小规模的增删改查为主,索引能显著降低单条/少量记录的访问成本,提升响应速度和并发能力。
下面从「为什么需要」和「为什么特别适合 OLTP」两个角度说明。
OLTP 常见特征:
如果没有索引:
典型 SQL:
SELECT * FROM orders WHERE order_id = 10086;
在亿级表中,差距是 毫秒 vs 秒级
OLTP 强依赖:
例如:
UNIQUE (user_id, phone)
作用:
没有索引的更新:
UPDATE account SET balance=balance-10 WHERE user_name='tom';
有索引:
OLTP 常见:
ORDER BY create_time DESC
LIMIT 10
有索引:
订单 ↔ 用户 ↔ 商品
索引是 JOIN 性能的基础。
索引不是越多越好:
| 代价 | 说明 |
|---|---|
| 写放大 | INSERT/UPDATE/DELETE 要维护索引 |
| 空间占用 | 特别是宽表、多列索引 |
| 优化器误用 | 不合理索引反而变慢 |
所以在 OLTP 中:
OLTP 要索引,是因为它追求“快、准、并发高”;索引用最小的代价,把随机 IO 变成定点访问,是 OLTP 性能的生命线。
如果你愿意,我也可以结合 MySQL / Oracle / PostgreSQL 或具体业务表结构,给你讲“该建什么索引、不该建什么”。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。