Sql server 一个T-SQL查询输出到多个记录集

Sql server 一个T-SQL查询输出到多个记录集,sql-server,tsql,Sql Server,Tsql,不要问什么,但我需要一个SQL查询中的两个表 像这样 Select Abc, Dgf from A 结果是两张表 abc 1 1 1 dgf 2 2 2 更多细节? 好的,让我们试试 现在我有了这样的sp: SELECT a.* from ActivityView as a with (nolock) where a.WorkplaceGuid = @WorkplaceGuid SELECT b.* from ActivityView as a with (nolock

不要问什么,但我需要一个SQL查询中的两个表

像这样

Select Abc, Dgf from A
结果是两张表

abc
1
1
1

dgf
2
2
2
更多细节? 好的,让我们试试

现在我有了这样的sp:

    SELECT a.* from ActivityView as a with (nolock) 
where a.WorkplaceGuid = @WorkplaceGuid

    SELECT b.* from ActivityView as a with (nolock) 
left join PersonView as b with (nolock) on a.PersonGuid=b.PersonGuid  where a.WorkplaceGuid = @WorkplaceGuid 

很酷。但执行时间约为22秒。我这样做是因为在我的程序中,我有一些自动从记录集中获取数据的类。班级活动和班级人员。这就是为什么我不能在一个记录集中记录。程序没有解析它。

您可以编写一个具有两个选择的存储过程

SELECT Abc FROM A AS AbcTable;

SELECT Dgf FROM A AS DfgTable;

根据您的具体要求,我会考虑提交两个单独的查询。我看不出组合它们有什么好处。

您可以编写一个具有两个选择的存储过程

SELECT Abc FROM A AS AbcTable;

SELECT Dgf FROM A AS DfgTable;

根据您的具体要求,我会考虑提交两个单独的查询。我看不出将它们组合在一起有什么好处。

SQL Server
支持类似于
GROUP BY
的遗留子句,但返回多个结果集(组成每个组的结果集后跟带有聚合的结果集):


但是,这是过时的,将在将来的版本中删除。

SQL Server
支持旧子句,它的行为几乎类似于
GROUP BY
,但返回多个结果集(组成每个组的结果集后跟带有聚合的结果集):


但是,这是过时的,将在将来的版本中删除。

这些查询似乎不是太复杂的查询(尽管select*通常不应用于生产中,并且在执行联接时也不应使用,因为它不必要地浪费资源,将联接字段的值发送两次)。因此,如果需要22秒,那么要么返回大量数据,要么没有正确的索引


您是否查看了执行计划以了解导致速度缓慢的原因?

这些似乎不是过于复杂的查询(尽管select*通常不应在生产中使用,在执行联接时也不应使用,因为它不必要地浪费资源,会两次发送联接字段的值)。因此,如果需要22秒,那么要么返回大量数据,要么没有正确的索引


你看过执行计划了吗,看看是什么导致了速度变慢?

你可以有一个存储过程输出多个记录集,但我认为你不能用一个
SELECT
语句来完成。需要更多的细节……你可以有一个存储过程输出多个记录集,但我认为你不能用一个单个
SELECT
语句。需要更多的细节。。。