有没有办法在sql server中编写异步sql查询

时间:2016-09-14 15:09:43

标签: sql sql-server tsql

我正在研究需要运行多个独立select语句的sproc。所以假设我有3个这样的选择语句:

select * from x into #x
select * from y into #y
select * from z into #z

假设每个select语句需要2s才能完成。如果我如上所示运行sproc,那么总查询时间将是6s。但是,如果我能够异步/同时运行查询,那么我可以在2s内执行sproc。有没有办法在T-SQL中做这样的事情?:

select * from x into #x async
select * from y into #y async
select * from z into #z async

2 个答案:

答案 0 :(得分:0)

作为事务数据库系统,SQL Server没有异步执行操作的概念。如果您需要执行此类操作,则应在应用程序层中执行该逻辑。

答案 1 :(得分:0)

您可以通过创建多个作业来异步运行,但这是一种解决方法,

见下面的代码

EXEC msdb.dbo.sp_add_job  
    @job_name = N'Job 1' ;

EXEC msdb.dbo.sp_add_jobstep  
    @job_name = N'Job 1',  
    @step_name = N'Load tablex',  
    @subsystem = N'TSQL',  
    @command = N'select * into tabley from y'



EXEC msdb.dbo.sp_add_job  
    @job_name = N'Job 2' ;

EXEC msdb.dbo.sp_add_jobstep  
    @job_name = N'Job 2',  
    @step_name = N'Load tablex',  
    @subsystem = N'TSQL',  
    @command = N'select * into tabley from y'

实例化这些作业或计划,以便它可以异步运行