我有大量的数据。我必须为所有这些数据编写SQL查询并检索数据。我的观点是,我应该在视图或SP中编写这些查询。也就是说,我需要知道它们之间是否有任何主要区别
INSERT INTO TABLE TABLE_NAME EXEC SP OR INSERT INTO TABLE TABLE_NAME SELECT * FROM VIEW
8oomwypt1#
是否存在任何重大的 * 性能 * 差异?否,但前提是存储过程中的查询与视图中的查询完全相同。您不应该看到任何重大的性能差异。如果存在性能差异,您也不会注意到它。如果您开始向过程添加额外的代码(参数、逻辑等),那么所有的赌注都将落空。
zzoitvuj2#
这是艺术的问题,或者是重用(维护)的能力。我个人更喜欢使用删除和创建表,而不是创建一个复杂的视图。原因很简单,任何人都必须从一个单一的屏幕上理解逻辑,而不是打开多个表,视图,GUI代码,也许报告进程。
tzcvj98z3#
如果存储过程中的查询与视图中的查询完全相同,则查询分析器应使用相同的执行计划。我在这里运行了一些测试,在一个SP和一个视图中使用相同的查询。两者的执行时间相似,每种类型大约6秒,SP稍慢一些。但这只是一个简单的sql语句测试。
3条答案
按热度按时间8oomwypt1#
是否存在任何重大的 * 性能 * 差异?否,但前提是存储过程中的查询与视图中的查询完全相同。您不应该看到任何重大的性能差异。如果存在性能差异,您也不会注意到它。如果您开始向过程添加额外的代码(参数、逻辑等),那么所有的赌注都将落空。
zzoitvuj2#
这是艺术的问题,或者是重用(维护)的能力。我个人更喜欢使用删除和创建表,而不是创建一个复杂的视图。原因很简单,任何人都必须从一个单一的屏幕上理解逻辑,而不是打开多个表,视图,GUI代码,也许报告进程。
tzcvj98z3#
如果存储过程中的查询与视图中的查询完全相同,则查询分析器应使用相同的执行计划。
我在这里运行了一些测试,在一个SP和一个视图中使用相同的查询。两者的执行时间相似,每种类型大约6秒,SP稍慢一些。但这只是一个简单的sql语句测试。