我正在相当大的表上重建SQL Server 2008上的非聚集索引
这是代码
CREATE UNIQUE NONCLUSTERED INDEX [idx_Documents_Title] ON [dbo].[Documents]
(
-- 3 columns
)
WHERE [deleted]=(0) AND [processing]=(0)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = ON, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
问题..如何测量重建索引所需的时间?我是.NET开发人员,通常使用StopWatch类来测量时间/性能。我可以应用类似的技术来衡量重建时间吗?可能不是因为它看起来索引的重建/创建是异步的。
答案 0 :(得分:1)
ALTER INDEX ... REBUILD
将同步执行。
DECLARE @StartTime DATETIME = SYSDATETIME()
ALTER INDEX [idx_Documents_Title] ON [dbo].[Documents] REBUILD
DECLARE @EndTime DATETIME = SYSDATETIME()
SELECT
StartTime = @StartTime,
EndTime = @EndTime,
DifferenceInMinutes = DATEDIFF(MINUTE, @StartTime, @EndTime)
答案 1 :(得分:1)
DECLARE @START_TIME DATETIME
SET @START_TIME = GETDATE()
--your index creation code or whatever you'd like to measure
SELECT DATEDIFF(SECOND, @START_TIME, GETDATE()) AS TOTAL_SECONDS
您可以用@START_TIME
包装代码,然后找到DATEDIFF
,可能会发现0
秒的运行速度如此之快。
我敢肯定有一些聪明的方法可以做到这一点,但这是一般的想法。
答案 2 :(得分:0)
@Jeroen Mostert帮了我大忙。执行SET STATISTICS TIME ON
和SET STATISTICS TIME ON
给了我所需的统计信息。