Indexing 索引唯一标识符和性能

Indexing 索引唯一标识符和性能,indexing,sql-server-2008-r2,sql-server-express,database-performance,uniqueidentifier,Indexing,Sql Server 2008 R2,Sql Server Express,Database Performance,Uniqueidentifier,我的活动监视器顶部有一个查询,它是最昂贵的查询,平均持续时间>18000毫秒。我的表格当前为2533081行。我的索引位于另一个bigint列上,我已经生成了该列,因此可以拥有一个聚集的唯一索引。GUID是我无法控制的唯一标识符数据类型(来自接口),设计决策是十年前做出的 不幸的是,更新查询需要检查GUID(唯一标识符)。这是在执行2个月后导致性能问题的原因。我收到的唯一重置参数是GUID,因此我无法使用日期、时间或任何其他参数重置日志记录 update Log set reset = @soc

我的活动监视器顶部有一个查询,它是最昂贵的查询,平均持续时间>18000毫秒。我的表格当前为2533081行。我的索引位于另一个bigint列上,我已经生成了该列,因此可以拥有一个聚集的唯一索引。GUID是我无法控制的唯一标识符数据类型(来自接口),设计决策是十年前做出的

不幸的是,更新查询需要检查GUID(唯一标识符)。这是在执行2个月后导致性能问题的原因。我收到的唯一重置参数是GUID,因此我无法使用日期、时间或任何其他参数重置日志记录

update Log
set reset = @sockettime 
where guid = @guid
and reset is null 
我昨天仅在uniqueidentifier GUID上创建了第二个非聚集索引,它使性能再次恢复到良好水平

在这个论坛上,我想问的是:是什么反对在uniqueidentifier上创建这样的第二个索引?我应该如何保持uniqueidentifier索引的性能


提前谢谢

我认为创建第二个索引没有任何错误。guid具有完美的性能。使用这种索引进行搜索是完美的。关于维护,没有什么特别的-就像任何其他指标一样。如果执行大量删除,则某些重建或重新组织不会不时造成损害。你可以在网上找到随时可用的维护程序,或者你甚至申请了一个,但你自己都不知道