Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TSQL多个连接与来自ASP.NET核心的多个请求?_C#_.net_Sql Server_Tsql_Asp.net Core - Fatal编程技术网

C# TSQL多个连接与来自ASP.NET核心的多个请求?

C# TSQL多个连接与来自ASP.NET核心的多个请求?,c#,.net,sql-server,tsql,asp.net-core,C#,.net,Sql Server,Tsql,Asp.net Core,我正在创建一个ASP.NET核心应用程序,使用Dapper连接到数据库。在我的一个商业课程中,我必须从4个表中获取一些相当大的数据集。有什么更好的解决方案 创建具有4个内部联接的“选择” 创建没有内部联接的基本select,然后在C中foreach该集合并调用另一个select以从下一个表中获取数据,等等 它基本上是一个选择,一个对数据库的请求将选择大量数据,或者多个对数据库的请求将选择多个较小的数据部分 以下是我认为Join应该更有效的几个原因: 只要在SQL中应用了适当的筛选条件 查询时,您

我正在创建一个ASP.NET核心应用程序,使用Dapper连接到数据库。在我的一个商业课程中,我必须从4个表中获取一些相当大的数据集。有什么更好的解决方案

创建具有4个内部联接的“选择”

创建没有内部联接的基本select,然后在C中foreach该集合并调用另一个select以从下一个表中获取数据,等等


它基本上是一个选择,一个对数据库的请求将选择大量数据,或者多个对数据库的请求将选择多个较小的数据部分

以下是我认为Join应该更有效的几个原因:

只要在SQL中应用了适当的筛选条件 查询时,您将仅从数据库中获取所需的数据 进入应用程序层。与此相反,如果你做出4 单独选择时,您可能最终不得不带来比以前多得多的数据 最终需要什么。 1次通过odbc/jdbc连接调用数据库引擎,而不是4次单独调用。 如果已正确索引基础表以覆盖 查询时,关系引擎是执行连接的最佳位置 结构化数据,因为它们是为此目的而设计的。 根据数据类型和底层结构,SQLServer将 想出最好的方式来访问数据,加入数据 执行索引合并联接、嵌套循环联接或哈希联接 在查询的不同点的不同数据集中,为这些活动相应地分配适当的RAM 试图设计和编码底层SQL Server搜索和排序 算法和存储决策都由您自己在应用程序中执行,以便对这4个单独选择的获取结果执行相同的任务。
更好的是什么方面?join解决方案可能是最快的解决方案。你应该,谢谢。有没有办法延迟一个内部连接?我相信这会优化查询还是否?例如,我按一个表的列筛选行,然后当我得到这些行时,我想用我得到的记录与另一个表进行内部联接。我相信如果我只是从。。哪里内部连接。。。等。联接将发生在my where子句之前。当您联接两个表并在联接子句中应用联接条件,以及在第一个表的where子句中过滤条件(如果有)时,SQL Server在执行计划构建阶段会考虑所有这些因素,如果您正确地调整底层结构,它会尝试使用尽可能少的数据。请记住,您选择的列也有很大的作用。所以,试着只选择您需要的列,并且这些选定的列应该由索引覆盖,以便更快地进行数据检索。如果我从联接表中选择summary ~~~ 40个字段,我应该创建40个索引吗?不,您不应该犯这样的错误。为了能够提供适当的性能调整建议,您应该至少提供查询、底层表结构、数据大小和执行计划。总的来说,如果你觉得自己在这方面的理解有差距,我建议你阅读有关如何创建索引、如何提出好的索引策略等方面的书籍/学术文章。对于一些快速提示,您可以浏览我在以下问题中的一些答案:1>2>