我正在研究需要运行多个独立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
答案 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'
实例化这些作业或计划,以便它可以异步运行