【问题标题】:Does use of foreign key in EDM of MVC slowers execution?在 MVC 的 EDM 中使用外键会减慢执行速度吗?
【发布时间】:2015-02-12 13:00:10
【问题描述】:

如果 3 个表的 EDM 如下图所示。

那么,

  1. 在 EDM 和 DB 中使用此类外键是一种好方法吗?
  2. 这样的数据库设计会减慢执行速度吗?
  3. 哪种架构更适合使用外键或 不使用外键?

如果有人想要来自 TAble-1 的 id 的 table-3 中的数据

那么它可以通过两种方式完成。

我。

db.TAble_1.FirstOrDefault(m => m.TAble_1ID == 2).Table_2.FirstOrDefault().TAble_3;

二。

通过加入 LINQ

  1. 那么哪个更快?

如果有人想从 TAble-3 的 id 获取 table-1 中的数据

那么它可以通过两种方式完成。

我。

db.TAble_1.FirstOrDefault(m => m.TAble_3ID == 2).Table_2.TAble_3;

二。

通过加入 LINQ

  1. 那么哪个更快?

提前谢谢大家。

【问题讨论】:

  • DBA site 上问这个问题可能会更好。
  • 这个问题是关于 asp.net MVC 的 LINQ 和 EDM 这就是我在这里问问题的原因。
  • “哪个更快”通过测量来回答。以一种方式运行,然后以另一种方式运行,对两者进行计时并比较结果。
  • 一般来说,命名表 Table1 和 Table2 等也无济于事。这不是一个好习惯,也不允许人们在这里推断您的数据如何被使用 - 这是 在设计数据结构时非常很重要。

标签: c# asp.net-mvc linq edmx ado.net-entity-data-model


【解决方案1】:

不,基本上什么是 EDM 或者让我们以 Linq to Sql 为例,它只是将对象查询转换为 SQL,然后使用 SqlConnection 对象触发与内联查询相同的操作。

这个问题有两个方面:

  1. 数据库设计是否正确? - 因为这实际上会对性能产生影响。设计是查询的核心,其精炼可以解决您的大部分性能问题。
  2. EDMX、Linq To Sql、实体框架或其他一些 ORM(对象关系映射器):通常为什么要使用 ORM?由于他们有小查询并且他们对 SQL Server 不是很精通,或者他们希望开发人员的学习曲线比较生硬,并且需要轻松快速地纠正简单的小查询(有一个存储过程简单选择没有意义。)因此,它通过将对象查询 (LINQ) 转换为 Sql 语句来解决您的问题。

您的案例的答案: 这取决于您对哪些查询使用相同的查询,您所说的查询,如果它有连接,它不会有所作为,(考虑到您的设计是正确的。)EDM 或上述任何内容都适用于任何此类查询,

但是是的,不要将它用于 "TOO BIG QUERIES" 或不要用它替换 Stored Procedures,因为它会将您的对象查询转换为 SQL 语句,然后发送它到 DB Server ,Sql Server Engine 解析查询,然后执行;因此,如果查询太大,那么在这种情况下,网络延迟,查询的编译,(并且由于查询刚刚被编译,它不会编译执行计划。)而在存储过程的情况下,它已经存在并且查询运行得更快

有用的链接:

Execution Plan

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-09
    • 2015-03-06
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多