在数据库领域,所谓“贪心算法”通常指数据库系统在查询优化、索引选择、join 顺序生成、物化视图选择等场景中采用的基于局部最优决策的启发式算法。例如:
这些算法虽效率高,但存在明显缺陷,主要包括:
贪心算法每一步只关注当前代价最小,不考虑后续影响。
例子:
在 join 顺序优化中,先 join 两个小表可能当前代价最低,但后续与大表 join 时会产生巨大中间结果,总体代价反而更高。
贪心决策依赖数据库的代价估计(cardinality / selectivity)。
问题包括:
➡ 代价模型一错,贪心结果更差。
数据库优化常是组合优化问题:
贪心算法难以捕捉这种非线性收益。
为了提高效率,贪心会:
后果:
现实场景存在约束:
贪心算法:
输入数据或 SQL 轻微变化,可能导致:
这对生产系统是不利的。
从算法角度看:
为弥补贪心缺陷,数据库常结合:
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。