gpt4 book ai didi

sql-server - SQL Server 中 GUID 类型列上非聚集索引的使用

转载 作者:行者123 更新时间:2023-12-02 07:05:29 25 4
gpt4 key购买 nike

我想优化我的团队用于应用程序的数据库的性能。

我一直在寻找添加外键的区域,然后对这些列建立索引以提高连接的性能。但是,我们的许多表都连接在 GUID 类型的 id 上,该 id 在插入项目时生成,并且其他表中与该项目关联的数据通常具有列 item_id 包含 GUID。

我读到,向 GUID 类型列添加聚集索引是一个非常糟糕的决定,因为索引需要不断重建才能有效。但是,我想知道,在上述场景中使用非聚集索引是否有任何损害?或者假设这有助于提高性能是否合理?如果需要,我可以提供更多信息。

最佳答案

<anytype> 上的索引是迄今为止改进连接和单例查找的最佳选择。如果缺少此索引,查询将始终必须端到端扫描整个表,并且(通常)性能结果很糟糕,并发性也付诸东流。

确实是uniqueidentifier由于您提到的原因,索引的选择很糟糕,但这绝不意味着您不应该创建这些索引。如果可能的话,建议将数据类型更改为 INT 或 BIGINT。使用 NEWSEQUENTIALID() UuidCreateSequential 生成它们将有助于解决碎片问题。如果所有替代方案都失败,您可能需要比其他索引更频繁地执行索引维护(重建、重新组织)操作。 但这些缺点绝对不能超过将索引放在首位的好处!

关于sql-server - SQL Server 中 GUID 类型列上非聚集索引的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13803326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com