Linq to SQL - 视图与存储过程

时间:2011-04-07 15:45:40

标签: sql linq-to-sql stored-procedures view

我想知道我何时在应用程序中使用L2S并从多个表中获取数据,哪一个更喜欢sql过程(select ... join-tables)或sql视图(select ... join-tables)。

感谢/约杰什

2 个答案:

答案 0 :(得分:7)

您需要了解将sprocs与视图进行比较并不是一个好的/公平的比较。他们做不同的事情。它是两种完全不同类型的物体。

如果您只需要数据而您正在做的只是一些连接,那么使用视图。如果您正在编写一些额外的代码并处理参数/多个语句,请使用sproc。 请记住,在存储过程内部,您仍然可以引用视图。因此可能存在两种情况都使用的情况!

很多人喜欢创建一个具有大量连接和过滤器(WHERE子句)的数据视图。然后,他们在存储过程中使用此视图,以根据传入的参数提供其他过滤。其他人喜欢在存储过程中明确地连接表。

性能取决于索引,而不是直接表访问与使用视图。因此,需要注意的主要问题是您在表定义中设置了哪些索引。将索引添加到搜索中非常常见的字段等

答案 1 :(得分:3)

视图和存储过程之间的重要区别。除标准/性能考虑因素外,这应该指导您的选择。 您正在从多个表中获取数据。你总是得到相同的数据吗?如果是这样,请继续观看。 您是否根据参数获得不同的数据?使用存储过程。

这是一个过于简化的分析,但是根据我们所获得的信息,我认为这样做会很好......

网上有很多文章可以帮助您做出选择。 Here就是一个例子

This article提供了很多关于视图/存储过程之间选择的性能影响的有用信息。