索引 Uniqueidentifier 和性能
Indexing a Uniqueidentifier and performance
我有一个查询位于我的 activity 监视器顶部,是平均持续时间 > 18,000 毫秒的最昂贵查询。我的 table 目前在 2,533,081 行。我的索引位于我生成的替代 bigint 列上,因此我可以拥有一个聚集的唯一索引。 GUID 是一种我无法控制的唯一标识符数据类型(来自接口),设计决定是在十年前做出的。
不幸的是,更新查询需要检查 GUID(唯一标识符)。这是在执行 2 个月后现在导致性能问题的问题。我收到的唯一重置参数是 GUID,因此我不能使用日期、时间或任何其他参数来重置日志记录。
update Log
set reset = @sockettime
where guid = @guid
and reset is null
我昨天仅在 uniqueidentifier GUID 上创建了第二个非聚集索引,它再次将性能恢复到良好水平。
我想在这个论坛上问的是:有什么理由反对在 uniqueidentifier 上创建这样的第二个索引?我应该怎么做才能保持 uniqueidentifier 索引的性能?
提前致谢。
我没有发现创建第二个索引有任何问题。该向导具有完美的 cardinality。使用这样的索引进行搜索是完美的。关于维护,没有什么特别的 - 就像任何其他索引一样。如果您执行大量删除,那么一些重建或重组不会时不时地造成伤害。您可以在 Internet 上找到随时可用的维护程序,或者您甚至已经申请了一个但您甚至不知道。
我有一个查询位于我的 activity 监视器顶部,是平均持续时间 > 18,000 毫秒的最昂贵查询。我的 table 目前在 2,533,081 行。我的索引位于我生成的替代 bigint 列上,因此我可以拥有一个聚集的唯一索引。 GUID 是一种我无法控制的唯一标识符数据类型(来自接口),设计决定是在十年前做出的。
不幸的是,更新查询需要检查 GUID(唯一标识符)。这是在执行 2 个月后现在导致性能问题的问题。我收到的唯一重置参数是 GUID,因此我不能使用日期、时间或任何其他参数来重置日志记录。
update Log
set reset = @sockettime
where guid = @guid
and reset is null
我昨天仅在 uniqueidentifier GUID 上创建了第二个非聚集索引,它再次将性能恢复到良好水平。
我想在这个论坛上问的是:有什么理由反对在 uniqueidentifier 上创建这样的第二个索引?我应该怎么做才能保持 uniqueidentifier 索引的性能?
提前致谢。
我没有发现创建第二个索引有任何问题。该向导具有完美的 cardinality。使用这样的索引进行搜索是完美的。关于维护,没有什么特别的 - 就像任何其他索引一样。如果您执行大量删除,那么一些重建或重组不会时不时地造成伤害。您可以在 Internet 上找到随时可用的维护程序,或者您甚至已经申请了一个但您甚至不知道。