一个简单的查询在存储过程中编写,同样写入内联查询,将快速执行。

时间:2016-04-04 07:39:47

标签: sql-server tsql stored-procedures

一个在存储过程中编写的简单查询,与内联查询一样,在SQL Server中快速执行。 面试小组的某个人问我这个问题,我说存储过程的原因是程序编译,但他说我错了。 请解释一下。?

1 个答案:

答案 0 :(得分:0)

我想,简单查询是一些只读代码。

  • VIEW完全可以内联并预编译。最大的优点是,您可以使用连接和过滤器将其绑定到更大的语句中,这在大多数情况下都可以使用索引和统计信息。
  • “新”语法中的表值函数(TVF)(没有BEGINEND与VIEW非常相似,但参数和处理也是预编译的.VIEW的优点在这里也一样。
  • UDF返回一个表(“旧”语法“)在大多数情况下是不应该做的事情。最大的缺点是优化器无法预先估计结果并将其作为一个处理-row-table - 在大多数情况下 - 非常糟糕......
  • StoredProcedure除了VIEW或TVF之外什么都可以做,这是一个痛苦的脖子 - 至少在我眼里。我知道,还有其他意见......最大的缺点是:每当你想继续返回的结果集时,你必须将它插入表(或声明的表变量)。针对此新表的进一步连接或过滤将错过索引和统计信息。可能是一个简单的嘿SP给我你的结果!很快,但这次电话会议后的所有内容都绝对失效。

所以我的设施:当要做时使用SP,并在有阅读时使用VIEW或TVF