Vis*_*hal 63 sql comparison stored-procedures views sql-server-2008
我已经使用了两者,但我不清楚的是我何时应该更喜欢一个而不是另一个.我的意思是我知道存储过程可以接受参数......但是我们仍然能够使用Views执行相同的操作吗?
因此,考虑到性能和其他方面何时以及为什么我更喜欢一个而不是另一个?
gbn*_*gbn 35
好吧,我会使用存储过程来更好地封装代码和控制权限.
视图不是真正的封装:它是一个扩展的宏.如果您很快就开始加入视图,那么您将遇到一些可怕的问题.是的,他们可以加入,但他们不应该......
可以这么说,视图是一个有位置的工具(例如索引视图),就像存储过程一样.
Mat*_*nen 19
视图的优点是它们可以像表一样对待.您可以使用WHERE从它们获取过滤数据,加入它们等等.如果它们足够简单,您甚至可以将数据插入到它们中.与存储过程不同,视图还允许您索引结果.
The*_*ing 14
View就像一个保存的查询语句,它不能包含复杂的逻辑或多个语句(超出了union等的使用).对于任何复杂或可通过参数自定义的内容,您可以选择存储过程,从而提供更大的灵
在数据库体系结构中使用视图和存储过程的组合是很常见的,并且可能由于非常不同的原因.有时,当重新设计模式时,可以在sprocs中实现向后兼容性,有时与数据在本地存储在表中的方式相比,可以使数据更易于操作(de-noramlized视图).
大量使用视图会降低性能,因为SQL Server更难以优化这些查询.但是,可以使用索引视图,它可以在以与索引表相同的方式使用联接时实际上增强性能.在实现索引视图时,对允许的语法有更严格的限制,并且根据SQL Server的版本实际使其工作有很多细微之处.
将Views视为比存储过程更像表.
我将存储过程的使用与发送/接收数据库之间的事务的需要联系起来.也就是说,每当我需要将数据发送到我的数据库时,我都使用存储过程.当我想更新数据或查询数据库以获取我的应用程序中使用的信息时,情况也是如此.
当您想要提供给定表中的字段子集时,可以使用数据库视图,允许MS Access用户查看数据而无需修改数据,并确保报告将生成反复数据结果.