我经常使用存储过程来访问数据,但不知道哪一个最好-视图还是存储过程或函数?
请告诉我以上哪种方法最适合数据访问,为什么最好,请在示例中列出原因。
我在Google上进行了搜索,以了解哪个最好,但没有得到预期的答案
答案 0 :(得分:3)
查看
视图是由“ SELECT
”语句组成的“虚拟”表,通过“虚拟”
我的意思是视图没有存储任何物理数据-只有视图的定义存储在数据库内部;除非您通过在其上放置索引来实现视图。
INSERT
,UPDATE
和DELETE
);仅SELECT
条语句。 大多数时候,视图封装了复杂的联接,因此它可以在查询或存储过程中重用。通过从基础表中隐藏敏感列,它还可以提供隔离和安全级别。
存储过程
存储过程是一组编译成单个执行计划的Transact-SQL语句,或者换句话说就是保存的Transact-SQL语句的集合。
存储过程:
视图:
功能
函数是由一个或多个Transact-SQL语句组成的子例程,可用于封装代码以供重用
有3种类型(标量,表值和内联变量表)UDF,它们各自具有不同的用途,您可以阅读有关BOL中的函数或UDF的更多信息
UDF有很大的局限性;根据定义,它不能更改数据库的状态。我的意思是,您无法在UDF(INSERT,UPDATE,DELETE)等内部执行数据操作操作。
答案 1 :(得分:0)
SP非常适合执行您无法使用函数执行的DDL语句。 SP和用户定义的函数接受参数并可以返回值,但是它们不能执行相同的语句。
用户定义的函数只能执行DML语句。
View不接受参数,仅接受DML语句。
答案 2 :(得分:0)
我会把它变得很短很直。
当您从不同的表访问数据并且不想传递参数时,请使用 View 。
要执行DML语句时,请使用功能。
要执行DDL语句时,请选择存储过程。
休息是在特定时间点将您的知识和想法打入您的脑海。
答案 3 :(得分:0)
我希望以下信息可以帮助您了解SQL过程,视图和函数的使用。
存储过程-存储过程可用于您提到的已经在使用的任何数据库操作,例如插入,更新,删除和提取。
视图-仅视图可用于获取数据,但由于无法将参数传递给视图而具有局限性。例如根据传递的参数过滤数据
函数-通常用于特定操作的函数,例如您具有许多内置的SQL Server函数,例如日期,数学,字符串操作等。
答案 4 :(得分:0)
出于性能原因,许多人会争论 -尽可能避免使用函数(尤其是标量)
调整存储过程(查询计划)和视图更容易
IMO,视图(和索引视图)只是更高级的选择 存储过程具有多种功能,您可以在其中进行转换/操作