【问题标题】:Multiple linq queries or just build a SQL view?多个 linq 查询或只是构建一个 SQL 视图?
【发布时间】:2015-08-18 17:38:05
【问题描述】:

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

【问题讨论】:

  • 您不提供任何代码,所以我们所能做的就是给出通用答案,或基于意见的答案或只是疯狂(有根据)的猜测。

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


【解决方案1】:

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

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

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

【讨论】:

  • 我的印象是查询引擎使用了组成视图的表的索引?
【解决方案2】:

由于您的目标是性能,因此请保持 5 个连接。您可以启用 SQL Profiler 并跟踪由 EF 生成的查询。也许,如果您手动编写查询然后发送给 EF 执行它,您也会获得更好的性能。

【讨论】:

    猜你喜欢
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    相关资源
    最近更新 更多