这是我用来打印出未来30年的所有日期的查询。
SELECT TOP 11000 --number of days for 30 years
IDENTITY(INT,1,1) AS N
INTO #Tally
FROM Master.dbo.SysColumns sc1,
Master.dbo.SysColumns sc2
declare @endDate datetime = '2049-01-01'
,@tmpDate datetime = '2019-01-01'
select dateadd(day, t.N - 1, @tmpDate)
from #Tally t
where t.N - 1 <= DATEDIFF(day, @tmpDate, @endDate)
它工作得很好。但是,一位SQL专家建议我将这些查询添加到我创建#Tally的第一部分下面。
ALTER TABLE #Tally
ADD CONSTRAINT PK_Tally_N
PRIMARY KEY CLUSTERED (N) WITH FILLFACTOR = 100
如果我运行select * from #Tally
上面的"ALTER“查询,结果表中没有任何变化。
我想知道我应该添加ALTER查询的原因是什么(不能问他)?这样做的目的是什么?我看到它添加了一个主键约束,但是为什么要使用clustered(n)
和fillfactor=100
呢?
谢谢!
https://stackoverflow.com/questions/56063309
复制相似问题