【发布时间】:2015-05-29 15:27:41
【问题描述】:
我有一个连接到多个其他表的表。
Quote
QuoteBuyingRate
QuoteChargesDetail
QuoteDisclaimer
我可以
- 使用多个存储过程从所有 4 个中选择我需要的数据
- 在一个存储过程中使用多个 select 语句选择数据
除了设计偏好或意见之外,使用其中一个或另一个是否有任何真正的技术优点/缺点?性能问题?
【问题讨论】:
-
据我所知没有重大的性能问题。
-
我个人喜欢选项 b,但不是 4 个单独的 select 语句,主过程将调用 4 个子过程。每次您需要填充实体/对象时,此选项仅创建一个连接和一个数据库调用。所以我会有一个名为 usp_Quote_Load_All 的存储过程,它调用 4 个其他过程,usp_quote_select、usp_quotebuyingrate_select 等。
-
@benjaminmoskovits 确保存储过程可以返回多个结果集。这很简单,只需在您的程序中包含 1 个以上的 select 语句。
-
@benjaminmoskovits 它完全按照您的想法编写,只需将多个 select 语句放入存储过程中。通过 google 搜索也很容易找到。去看看。祝你好运。
-
@benjaminmoskovits 澄清一下如何处理多个结果集:MARS 是它们的一个非常特殊的应用程序,它允许在检索结果时执行其他命令。这与简单地循环使用多个结果集不同。与 MARS 无关,使用
SqlDataReader.NextResult()或填充DataSet在.NET 中访问其他结果集相当容易,然后每个结果集将包含一个表。但是,正如您刚才提到的,在纯 T-SQL 中处理多个结果集绝非易事。
标签: c# sql asp.net sql-server vb.net