多个linq查询或只是构建一个SQL视图?

时间:2015-08-18 17:38:06

标签: sql-server asp.net-mvc performance linq

我有一个mvc视图,需要来自5个不同数据库表的数据。我目前有一个很大的LINQ查询连接所有表并返回结果,工作正常。但是,我想知道是否更好地构建一个DB视图以使LINQ查询变得简单。

2 个答案:

答案 0 :(得分:1)

通过单个查询查询5个表不是必然问题。这取决于大量的外部因素,例如数据库设置的性能和表格本身的特性:它们是巨大的数百万行还是只有几百行?

假设 是一个问题,导致数据库负载过大或页面加载时间过长,那么是的,你可能想要研究另一种解决方案,但是视图几乎肯定不是正确的选择。

视图有一个非常关键的负面因素,它们不能拥有键或索引。这意味着除非你打算只返回视图中的所有内容,否则查询到视图几乎总是比在表中进行连接更慢。坦率地说,我几乎从来没有在Web应用程序上下文中很好地使用数据库视图。也许他们在其他环境中工作,例如报告,但除此之外,他们没用。如果需要Entity Framework的替代方法,请使用存储过程。

答案 1 :(得分:0)

由于您的目标是性能,请继续使用5个连接。您可以启用SQL事件探查器并跟踪EF生成的查询。也许,如果您手动编写查询然后发送给EF执行它,您也可以获得更好的性能。