我有大量的数据。我已经为所有这些编写了SQL查询并检索了数据。我的问题是,我应该将这些查询写在视图或存储过程中。也就是说,我需要知道这两者之间是否存在重大差异。
INSERT INTO TABLE TABLE_NAME EXEC SP
OR
INSERT INTO TABLE TABLE_NAME SELECT * FROM VIEW
我有大量的数据。我已经为所有这些编写了SQL查询并检索了数据。我的问题是,我应该将这些查询写在视图或存储过程中。也就是说,我需要知道这两者之间是否存在重大差异。
INSERT INTO TABLE TABLE_NAME EXEC SP
OR
INSERT INTO TABLE TABLE_NAME SELECT * FROM VIEW
如果存储过程中的查询与视图中的查询完全相同,则查询分析器应使用相同的执行计划。
我在这里运行了一些测试,使用SP和视图中相同的查询。两者在每种类型上的执行时间大约为6秒,其中SP稍微慢一些。但这只是一个简单的SQL语句测试。
这是一门艺术,或者说是重复利用的能力(维护)的问题。 个人而言,我更喜欢使用删除和创建表格,而不是创建复杂的视图。原因很简单,任何人都可以从一个屏幕上理解逻辑,而不必打开多个表格、视图、GUI代码和可能的报告进程。
有任何主要的性能差异吗?没有,但只有在存储过程内部的查询与视图内部的查询完全相同的情况下才是如此。您不应该看到任何主要的性能差异。如果存在性能差异,您将不会注意到它。如果您开始向存储过程添加额外的代码(参数、逻辑等),那么一切都无法预测。