请问视图和存储过程的缺点是什么?

解决方案 »

  1.   

    个人观点:
    在sql语句比较简单,而且没有什么逻辑关系和不是非常需要MSSQL机制做优化的时候,尽量不要用存储过程,直接写SQL的速度与存储过程的速度大概是相同的。
    视图方面还不怎么清楚
    请下面的人回答
      

  2.   

    存储过程的效率肯定比直接写SQL的快得多
    而且真正的做到了代码重用...但如果考虑数据库移植问题的话
    存储过程太多显然移植性降低
      

  3.   

    不同意jetdw的说法存储过程是被编译过的,以二进制保存。SQL语句,每次执行,都要先编译,效率明显下降。你在本地,两者区别不大,如果是网络访问,存储过程很较少网络流量
      

  4.   

    从平台的移植性来讲,存储过程不好,例如:由mssql 移植到Oracle,所有的脚本都是要重新写,挺麻烦的
      

  5.   

    楼上所甚是,视图及存储过程在移植时会有很多问题,而且很难检查出来,而且MSSQL与ACCESS之间的视图也有很多写法是不同的。
    再是会增加数据库结构的复杂度。在一开始设计时,会逐渐增加不同的新增、修改、查询及其他功能的视图和存储过程,但每做一步,或多或少对以前的视图和存储过程都有新的要求,要么新建,要么修改。如果系统功能宽大,在数据库里就会存在比基础表多好几倍的视图或存储过程,也会出现视图嵌套视图的情况,对今后的维护和修改增加了复杂度。
    然后存储过程等是直接运行在database server上的,不必要的视图和存储过程也会影响服务器的资源消耗。以前的公司的老大就一再要求不要用视图等,说直接在程序里写SQL会更快。
    在以团队来设计时,对数据库的设计和修改都有很多要求,也不允许随便修改数据库结构,包括视图和存储过程。所以一般视图都尽量用SQL来替代。