gpt4 book ai didi

sql-server - 主键的二进制数据类型与 Int?

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

使用主键的二进制数据类型是否存在性能(或其他)问题。数据库有大量使用这些键定期连接的大型表。索引是聚集的。我相信这些不能自动递增(作为身份字段)。

最佳答案

在 SQL Server 中,主键默认也是聚集索引的键。

主键本身只需唯一且不可为空即可。没有其他限制。

但是聚集索引键应该尽可能短。在大多数情况下,不断增加的值也是首选。原因是索引的深度直接受索引键的长度影响。对于任何索引类型都是如此。然而,聚集索引键会自动附加到该表上的每个其他索引键,因此会增加长键的负面影响。这意味着在大多数情况下 INT IDENTITY 是一个不错的选择。

如果您的主键是非聚集的,那么保持简短并不是那么重要。但是,您正在使用它进行连接。这意味着您可能在每个子表上的该键上也有一个索引,因此问题再次增加。因此,自动增加的代理键可能是更好的选择。

对于许多(如果不是大多数)情况来说,这一切都是正确的。然而,总有异常(exception)。您没有提供有关您的用例的大量信息,因此答案必须是一般性的。在决定采取哪种方式之前,请确保使用实际数据测试环境中读取和修改操作的性能。

最后一点,4 字节 BINARY 和 INT 的性能可能非常接近。如果值不是以递增的二进制排序方式创建的,您可能会看到差异。这可能会导致插入操作期间发生页面拆分,从而影响写入性能。

关于sql-server - 主键的二进制数据类型与 Int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18708829/

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