Sql server 修改现有索引:使用drop_existing=on vs alter index语句创建索引
我不熟悉索引维护。我看到我们的大多数索引都是使用Sql server 修改现有索引:使用drop_existing=on vs alter index语句创建索引,sql-server,tsql,Sql Server,Tsql,我不熟悉索引维护。我看到我们的大多数索引都是使用create index和drop\u existing=on修改的。例如: create nonclustered index ixn_SomeTable__SomeIndexName_ic1 on dbo.SomeTable ( Column1 ) include ( Column2, IncludeThisNewColumn3 ) with ( sort_in_t
create index
和drop\u existing=on
修改的。例如:
create nonclustered index ixn_SomeTable__SomeIndexName_ic1
on dbo.SomeTable ( Column1 )
include ( Column2, IncludeThisNewColumn3 )
with ( sort_in_tempdb = on, drop_existing = on, online = on, fillfactor = 95 ) on [SomeFileGroup]
go
但我看到TSQL也有alterindex
语句
问题-
drop\u existing=on
的作用是什么?如果索引存在,它是否只是删除索引并重新创建它,或者如果修改不需要重建索引,它是否在重建索引时保存(重新索引数据等)。(例如,在非聚集索引中包含列)DROP\u EXISTING
子句告诉SQL Server正在删除现有的聚集索引,但将在其位置添加一个新的聚集索引,使SQL Server推迟更新非聚集索引,直到新的聚集索引就位
如果修改实际上不需要重建索引,那么在重建索引(重新索引数据等)时是否会节省。(例如,在非聚集索引中包含列)
如果聚集索引键未更改且定义为唯一,则SQL Server根本不会重新生成非聚集索引
使用drop_existing=on创建索引和alter index之间有什么区别?什么时候我必须使用其中一种
alter index用于重建/重新生成索引。我看不到与Create的任何比较
当对索引进行修改时,索引是否变得不可用?是否有方法将不可用时间保持在最小
当您使用DROP EXISTING
子句时,索引将在大部分时间内可用。索引将要求在末尾使用独占锁,但这种阻塞将非常短
参考文献: