视图可以起到简化应用设计、提高开发速度的作用,因此程序员大多有使用视图的倾向和意愿。这原本没有问题——简单的视图定义能屏蔽复杂的数据查询结构。
然而,我们也应该意识到视图在提供简洁数据表述的同时,还造成了SQL在执行上的复杂化,并且某些极端的视图甚至可能会导致系统在资源使用上的尖峰载荷。一种常见的开发失误是:程序员使用了某定义和视图,而该视图又引用了其他的若干视图。如下图所示就是这样的结构——在视图上创建视图,形成了由多层视图构成的金字塔结构。
多层视图的结构
Oracle在运行状态下调用视图时会将视图还原为SQL语句。显然,最终可能会导致处于顶层的视图在还原为SQL语法后十分复杂,其操作范围会涉及若干表。这对于Oracle来说是个难题——多表参与SQL操作提升了SQL复杂度,Oracle优化器并不一定能为非常复杂的SQL计算出优化的执行路径,因为优化器不会用几分钟时间去设计成百上千种执行计划,然后再选择最佳的方案执行。
所以,视图虽好,但在初始设计时,应考虑避免上述的极端情况。
上一篇: 站外SEO与站内SEO
下一篇: SQL执行效率的预评估
售后保障
承诺任何问题1小时内解决数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款