运行SQL查询异步

时间:2016-02-16 05:09:41

标签: sql sql-server database

是否可以在SQL Server中的异步中运行查询。例如,如果我需要运行以下查询

SELECT VALUE FROM DBO.fn1(@Input1)
UNION
SELECT VALUE FROM DBO.fn2(@Input2)
UNION
SELECT VALUE FROM DBO.fn3(@Input3)
UNION
SELECT VALUE FROM DBO.fn4(@Input4)

或没有UNION

对于示例以下查询将返回3个结果集。我可以并行运行所有这些。

SELECT [COLUMN1...COLUMNN] FROM [TABLE1...TABLEN]
SELECT [COLUMN1...COLUMNN] FROM [TABLE1...TABLEN]
SELECT [COLUMN1...COLUMNN] FROM [TABLE1...TABLEN]

我尝试了谷歌,但无法找到并行运行查询的任何内容,类似于C#中基于任务的编程

2 个答案:

答案 0 :(得分:0)

在数据库中,没有像编程那样的异步过程。唯一可用的选项是并行性,sql server决定何时使用它。

答案 1 :(得分:0)

您无法在标准SQL中执行此操作:它是同步的。在存储过程完成之前,您也无法处理输出参数。

有关详细信息,请参阅service broker

有可能(见Asynchronous procedure execution),但很可能结果不是你想要的。首先,异步意味着打破过程调用者所假定的事务上下文(插入发生在不同的事务中)。另外,执行可靠的异步(如在我的链接文章中)意味着执行更多写操作,因此没有性能优势。