Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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# 返回多个集合的存储过程与每个集合的多个存储过程_C#_Sql_Asp.net_Sql Server_Vb.net - Fatal编程技术网

C# 返回多个集合的存储过程与每个集合的多个存储过程

C# 返回多个集合的存储过程与每个集合的多个存储过程,c#,sql,asp.net,sql-server,vb.net,C#,Sql,Asp.net,Sql Server,Vb.net,我有一个连接到多个其他表的表 Quote QuoteBuyingRate QuoteChargesDetail QuoteDisclaimer 我能 使用多个存储过程从所有4个存储过程中选择所需的数据 在一个存储过程中使用多个select语句选择数据 除了设计偏好或观点外,使用其中一种是否有真正的技术优势/劣势?性能问题 从绝对表面上看,没有什么理由走这条路或那条路。假设一分钟内没有多次呼叫,则多个呼叫与单个呼叫之间的差异无关紧要。除非电话数量很大,否则这绝对没关系 所以,如果您提出了一个理由

我有一个连接到多个其他表的表

Quote
QuoteBuyingRate
QuoteChargesDetail
QuoteDisclaimer
我能

  • 使用多个存储过程从所有4个存储过程中选择所需的数据
  • 在一个存储过程中使用多个select语句选择数据

  • 除了设计偏好或观点外,使用其中一种是否有真正的技术优势/劣势?性能问题

    从绝对表面上看,没有什么理由走这条路或那条路。假设一分钟内没有多次呼叫,则多个呼叫与单个呼叫之间的差异无关紧要。除非电话数量很大,否则这绝对没关系

    所以,如果您提出了一个理由,无论哪种方式,它都是适合您的用例的更好的体系结构,那么就这样做吧。若你们并没有任何压力,那个么为了简单起见,只需在一个存储过程中进行操作,并且网络传输稍微更高效一些


    现在,如果您开始使用条件逻辑或其他复杂性,以便在一次调用中实现所有这些功能,则会导致潜在的查询计划缓存问题,并可能影响您的可伸缩性。

    这些表是如何连接的?如果表具有主键并且通过外键约束连接,则可能不需要运行多个存储过程或从单个存储过程返回多个结果集。如果可以利用联接,则返回单个结果集的单个存储过程就足够了。

    据我所知,没有明显的性能问题。我个人喜欢选项b,但主过程将调用4个子过程,而不是4个单独的select语句。每次需要填充实体/对象时,此选项仅创建一个连接和一个数据库调用。所以我会有一个名为usp_Quote_Load_的存储过程,它调用其他4个过程,usp_Quote_select,usp_quotebuyingrate_select,等等@benjaminmoskov它肯定一个存储过程可以返回多个结果集。这很简单,只需在您的过程中包含多个select语句。@benjaminmoskovits它的编写方式完全符合您的想法,只需在一个存储过程中放入多个select语句即可。。通过谷歌搜索也很容易找到。去看看吧。祝你好运。@benjaminmoskovits只是为了弄清楚如何使用多个结果集:MARS是它们的一个非常特殊的应用程序,它允许在检索结果时执行其他命令。这与简单地循环使用多个结果集不同。与MARS无关,使用
    SqlDataReader.NextResult()
    或填充
    数据集
    访问.NET中的其他结果集相当容易,然后每个结果集将包含一个表。然而,正如您刚才提到的,在纯T-SQL中处理多个结果集绝非易事。您提到了我的一点问题,即“假设每分钟不进行多次调用,那么多个调用和单个调用之间的差异是不相关的”。。。我一直在四处寻找一些关于这方面的文档,但找不到任何。你有任何参考资料吗?或者你只是从你的心理知识库中得出这个结论?它来自大量的个人经验。然而,衡量一件事情的效率和效率的最好方法就是去衡量它。分析代码和dB调用将为您的个人环境和调用量/频率提供硬数字。话虽如此,假设从db到app server的连接良好,连接时间尤其是使用连接池时。net在默认情况下,是整个执行成本中非常小的一部分。