视图(我这里说的是非物化视图)这东东好处之一是把一些复杂的东东隐藏起来了. 开发在使用时,不必关心内部的一些逻辑,直接拿来用就行了. 而且视图不占空间,不影响基表本身的性能.
但在项目开发时常被滥用了. 滥用的原因之一是开发贪图省事,喜欢拿现成的视图再和其它表或视图关联. 视图上面叠视图.他们是做出东西来. 可苦了DBA.
1.性能不可控
关联太多,肯定会影响查询性能.
2.表关联和业务逻辑复杂
面对视图套视图, 面对十几二十个基表,长长的甚至超四五百行的执行计划.
你需要理清楚表关联和业务逻辑.确保找出好的执行计划.可不是个轻松活.
3.视图的可修改性很难确定.
当你好不容易理清并有把握调出最好的效果,并且保证逻辑是正确的.这时,你基本上需要调整构成视图的sql,但你怎么能保证这个视图在前台业务逻辑是怎么使用的?另外的地方有没被调用呢?
你能确定你的更改不会影响它们吗?
你又会面临我是不是要另存一份,弄个新的来代替它们? 那有没可能会留下一堆可能在某个地方用的也有可能在其它地方没用到过的视图?
所以真要动手有时是很难的.
因此我通常会在项目中不赞成这种视图的堆积.如果确实有需要,视图的逻辑层次和功能一定要标注清楚. 同时为了简单,尽量在表设计合理性方面下功夫. 防止太过复杂的关联出现.
要以简单为妙.