【发布时间】:2011-04-07 15:45:40
【问题描述】:
我想知道我何时在应用程序中使用 L2S 并从多个表中获取数据,哪个更喜欢 sql 过程(select...join - 表)或 sql 视图(select...join - 表)。
谢谢/Yogesh
【问题讨论】:
标签: sql linq-to-sql stored-procedures view
我想知道我何时在应用程序中使用 L2S 并从多个表中获取数据,哪个更喜欢 sql 过程(select...join - 表)或 sql 视图(select...join - 表)。
谢谢/Yogesh
【问题讨论】:
标签: sql linq-to-sql stored-procedures view
您需要了解将存储过程与视图进行比较并不是一个很好/公平的比较。他们做不同的事情。这是两种完全不同类型的对象。
如果您只需要数据并且您所做的只是一些连接,那么请使用视图。如果您正在编写一些额外的代码并处理参数/多个语句,请使用存储过程。 请记住,在存储过程内部,您仍然可以引用视图。所以可能会出现两种情况都使用的情况!
很多人喜欢创建具有大量连接和过滤器(WHERE 子句)的单一数据视图。然后,他们在存储过程中使用此视图,根据传入的参数提供额外的过滤。其他人喜欢在存储过程中显式连接表。
性能取决于索引,而不是直接访问表而不是使用视图。因此,要注意的主要事项是您在表定义中设置了哪些索引。为搜索中非常常见的字段添加索引等。
【讨论】:
SELECTing 来自一个表、多个表、一个视图或多个视图的数据。
视图和存储过程之间的一个重要区别。除了标准/性能考虑之外,这应该指导您的选择。 您正在从多个表中获取数据。你总是得到相同的数据吗?如果是这样,去看看。 您是否根据参数获得不同的数据?使用存储过程。
这是一个过于简化的分析,但根据我们掌握的信息,我认为它已经足够好了......
网上有很多文章可以帮助您做出选择。 Here 就是一个例子
This article 提供了很多关于在视图/存储过程之间进行选择的性能影响的有用信息。
【讨论】: