然而,我们也应该意识到视图在提供简洁数据表述的同时,还造成了SQL在执行上的复杂化,并且某些极端的视图甚至可能会导致系统在资源使用上的尖峰载荷。一种常见的开发失误是:程序员使用了某定义和视图,而该视图又引用了其他的若干视图。如下图所示就是这样的结构——在视图上创建视图,形成了由多层视图构成的金字塔结构。
Oracle在运行状态下调用视图时会将视图还原为SQL语句。显然,最终可能会导致处于顶层的视图在还原为SQL语法后十分复杂,其操作范围会涉及若干表。这对于Oracle来说是个难题——多表参与SQL操作提升了SQL复杂度,Oracle优化器并不一定能为非常复杂的SQL计算出优化的执行路径,因为优化器不会用几分钟时间去设计成百上千种执行计划,然后再选择最佳的方案执行。