实体框架:多个查询与内部联接

时间:2019-06-03 13:26:53

标签: c# entity-framework

我目前正在使用Entity Framework,并且对内部联接有性能问题。

从总体上看,以下2种情况中哪一种是最好的?

出于简单起见,此示例假设兄弟姐妹之间存在一对一的关系。

(1)内部联接:

import AuthScreen from "./../screens/Auth/auth"
import { createStackNavigator } from 'react-navigation';


export const authNavigation = createStackNavigator(
  {
    Landing: {
      screen: AuthScreen
    }
  }, 
  {
    initialRouteName: 'Landing',
  }
)

(2)可选的多个查询:

AuthScreen

那哪种情况最适合每种情况?

对于没有家人的人,或者有父母,母亲,兄弟和姐妹的人,一个人比另一个人好吗?

1 个答案:

答案 0 :(得分:3)

选项(1)应该总是更好,因为JOIN在数据库级别执行。根据经验,您可以说本机数据库检查比代码检查要快,并且数据库和代码之间的多次往返总是比单个检查慢。由于数据库无论如何都会隐式地检查联接上的空ID,因此无需在代码中执行此操作,也无需为此添加额外的往返。如果数据库知道查询的目的,数据库将能够自动优化执行计划,这可以进一步提高性能-尤其是在正确设置约束和/或频繁执行查询的情况下。

也许有人可以为此添加100%的基准,但是从纯粹的逻辑角度来看,如果没有任何奇怪的事情,这应该是正确的。