“数据库贪心算法”并不是数据库系统里像 B+ 树、事务、SQL 那样的一个标准内置概念,而是一个应用场景说法:指在数据库相关的问题(如查询优化、索引选择、数据划分、调度等)中,使用**贪心算法(Greedy Algorithm)**的思想来求解近似最优解。
下面分几层说清楚。
贪心算法:每一步都做“当前看起来最优”的选择,不考虑全局,期望最终得到整体较优解。
特点:
数据库优化器要把多个表 join 成最优执行计划。
例如:
每一步:
从剩余表中选代价最小的 join 方式
合并,再继续
✅ 优点:快
❌ 缺点:可能不是最优执行计划
问题:
给定很多查询,选哪些索引能让整体代价最低?
贪心做法:
这是典型的 贪心子集选择问题。
例如:
贪心目标:
多个查询并发:
这是贪心调度策略。
选哪些视图能减少查询代价:
| 方面 | 说明 |
|---|---|
| 使用目的 | 在大规模组合问题中快速求近似解 |
| 常见场景 | 查询优化、索引、分区、调度 |
| 优点 | 快、易实现 |
| 缺点 | 不保证全局最优 |
| 对比 | 动态规划 / 代价模型更准但更慢 |
数据库贪心算法:在数据库优化问题中,每一步都选“当前代价最小 / 收益最大”的方案,用牺牲最优性来换执行效率。
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。