我有大量的数据。我已经为所有这些编写SQL查询并检索数据。我的观点是我应该在视图还是SP中编写这些查询。 即我需要知道的是有存储过程查看和存储过程之间是否存在任何性能差异
INSERT INTO TABLE TABLE_NAME EXEC SP
OR
INSERT INTO TABLE TABLE_NAME SELECT * FROM VIEW
我有大量的数据。我已经为所有这些编写SQL查询并检索数据。我的观点是我应该在视图还是SP中编写这些查询。 即我需要知道的是有存储过程查看和存储过程之间是否存在任何性能差异
INSERT INTO TABLE TABLE_NAME EXEC SP
OR
INSERT INTO TABLE TABLE_NAME SELECT * FROM VIEW
之间的主要区别:的存储过程是提高了安全性,效率和数据库客户端/服务器应用程序的可用性预编译的数据库查询。开发人员根据输入和输出变量指定存储过程。然后,他们在数据库平台上编译代码,并将其提供给应用程序开发人员用于其他环境(如Web应用程序)中。所有主要的数据库平台,包括Oracle,SQL Server和MySQL都支持存储过程。该技术的主要优势在于预编译执行带来的显着性能提升,客户端/服务器流量的减少,代码重用和抽象的开发效率提升以及赋予用户对特定存储过程而不是基础数据库表的权限。
查看:数据库视图允许您创建在访问时即时生成的“虚拟表”。视图作为SQL语句存储在数据库服务器上,该语句从一个或多个表中提取数据,并(可选)对该数据执行转换。用户可以像查看真实的数据库表一样查询视图。通常使用视图来缓解安全问题,方法是向用户提供对数据库表的某个视图的访问权限,而无需访问基础表本身。
浏览
1.Does不接受参数
2.可被用作大的查询的构建块。
3.可以只包含一个Select查询。
4.不能修改任何表,除了创建它的基表以外。
5.可以使用(有时)作为插入,更新,删除查询的目标。
存储过程
1.Accept参数
2.可以不被用作大型查询的构建块。
3.可包含若干声明一样,如果,否则,循环等
4.可进行修改,以一个或多个表。
5.不能用作插入,更新,删除查询的目标。
是否有任何重大性能区别?不,但前提是存储过程中的查询与视图内的查询完全相同。你不应该看到任何主要的性能差异。如果性能存在差异,则不会注意到它。如果您开始向proc(参数,逻辑等)添加额外的代码,则所有投注都将关闭。
您能否提供任何来源? –
它的艺术的问题,或重用(维护)的能力。 我个人比较喜欢使用drop创建表格,而不是创建复杂的视图。理由很简单,任何人都必须从一个屏幕上理解逻辑,而不是打开多表格,视图,GUI代码和可能的报告进程。
螺丝刀和锤子之间的性能差异是什么?他们是完全不同的工具,虽然你*可以*滥用一种,并尝试在对方的角色中使用它,你真的不应该这样做。 –
存储过程和视图用于不同的目的,我们只能比较它们用于相同目的的两件事,否则比较使用较少 –