Sql server MS SQL SP将其他SP的调用保存到临时表中,是否可以避免?

Sql server MS SQL SP将其他SP的调用保存到临时表中,是否可以避免?,sql-server,stored-procedures,common-table-expression,Sql Server,Stored Procedures,Common Table Expression,我们有一个存储过程(a),它调用另一个存储过程(B),并将结果保存到临时表中 第二个存储过程(B)包含2个while循环和排序,它在客户端给我们带来了性能问题 我们有第二个SP(B)的原因是因为它被其他SP使用,所以如果我们需要更改任何内容,我们只能在该位置进行更改 我修改了第二个SP(B)以删除循环,并使用了递归CTE,但是,第一个SP(a)仍然调用它并将其结果保存到临时表中 是否可以避免将结果保存到临时表中,并以某种方式简单地使用第二个SP(B)返回的结果集?可能。也许不是。这里没有人可以访

我们有一个存储过程(a),它调用另一个存储过程(B),并将结果保存到临时表中

第二个存储过程(B)包含2个while循环和排序,它在客户端给我们带来了性能问题

我们有第二个SP(B)的原因是因为它被其他SP使用,所以如果我们需要更改任何内容,我们只能在该位置进行更改

我修改了第二个SP(B)以删除循环,并使用了递归CTE,但是,第一个SP(a)仍然调用它并将其结果保存到临时表中


是否可以避免将结果保存到临时表中,并以某种方式简单地使用第二个SP(B)返回的结果集?

可能。也许不是。这里没有人可以访问您的代码,也没有人可以访问您的全部需求。为什么不在您的测试环境中试用它并看看它是如何工作的?这取决于您在将SP(A)结果保存到临时表中后如何处理它们。将B重构为表值函数?您在SP A内部如何处理SP B的结果?SP A调用SP B并将结果保存在临时表中,然后删除重复项,内部连接一个实际的表,以仅获取匹配的记录,最后使用少量连接进行大选择,以获取项目的实际文本值,因为SP B只返回ID。