标签:qp TotalRows RowsProcessed ElapsedSeconds SqlServer 查询 索引 time RowsLeft
用于在创建大索引时试试查看创建进度使用。
参考字https://dba.stackexchange.com/questions/139191/sql-server-how-to-track-progress-of-create-index-command。用于个人记录使用
1. 在创建索引时添加如下命令
SET STATISTICS PROFILE ON;
2. 使用如下sql查询索引创建状态
DECLARE @SPID INT = 51; ;WITH agg AS ( SELECT SUM(qp.[row_count]) AS [RowsProcessed], SUM(qp.[estimate_row_count]) AS [TotalRows], MAX(qp.last_active_time) - MIN(qp.first_active_time) AS [ElapsedMS], MAX(IIF(qp.[close_time] = 0 AND qp.[first_row_time] > 0, [physical_operator_name], N'<Transition>')) AS [CurrentStep] FROM sys.dm_exec_query_profiles qp WHERE qp.[physical_operator_name] IN (N'Table Scan', N'Clustered Index Scan', N'Index Scan', N'Sort') AND qp.[session_id] = @SPID ), comp AS ( SELECT *, ([TotalRows] - [RowsProcessed]) AS [RowsLeft], ([ElapsedMS] / 1000.0) AS [ElapsedSeconds] FROM agg ) SELECT [CurrentStep], [TotalRows], [RowsProcessed], [RowsLeft], CONVERT(DECIMAL(5, 2), (([RowsProcessed] * 1.0) / [TotalRows]) * 100) AS [PercentComplete], [ElapsedSeconds], (([ElapsedSeconds] / [RowsProcessed]) * [RowsLeft]) AS [EstimatedSecondsLeft], DATEADD(SECOND, (([ElapsedSeconds] / [RowsProcessed]) * [RowsLeft]), GETDATE()) AS [EstimatedCompletionTime] FROM comp;
标签:qp,TotalRows,RowsProcessed,ElapsedSeconds,SqlServer,查询,索引,time,RowsLeft 来源: https://www.cnblogs.com/binw/p/13969562.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。