gpt4 book ai didi

sql-server - SQL表的PK的数据类型如何影响查询性能?

转载 作者:行者123 更新时间:2023-12-03 09:32:38 34 4
gpt4 key购买 nike

SQL 表 PK 的数据类型如何影响查询性能?

具体来说,我感兴趣的是:

  1. 字符串数据类型(例如 nvarchar(n)varchar(n) )和数字数据类型( intbigintuniqueidentifier )之间有什么区别?

  2. 不同字符串数据类型之间有什么区别?

  3. 字符串数据类型的最大长度如何影响性能?有具体的varcharnvarchar性能急剧下降的时间是多久?

  4. 不同数值数据类型之间有什么区别?

  5. 这些变化有何影响:

    1. 主键的相等性比较?

    2. 连接主键?

    3. 按主键更新?

    4. 按主键进行复杂值比较(例如,在 LIKE 上使用 varchar 或在 <= 上使用 int )?

  6. 如果不同选项之间存在显着差异,那么可以采取哪些措施来优化较慢数据类型的性能?

  7. 复合 PK 与其他选项相比如何?

更新:需要明确的是,我知道这是一个很长的问题,我并不是要求填鸭式地提供所有这些信息。提供可靠在线资源链接的答案就足够了。

更新 2:

我正在使用 SQL Server Express 2008。

最佳答案

我没有任何确切的数字 - 但根据经验和我多年来学到的一切,我会说:

  • 尝试使用固定长度键 - INTBIGINTCHAR(x)(对于 x <= 6 个字符)- 这些往往更容易处理,并且给 SQL Server 带来更少的工作开销。避免使用较大的 VARCHAR

  • 由于 SQL Server 对每个索引条目有 900 字节的限制 - 甚至不要尝试使用 VARCHAR(MAX) 或类似的东西......

  • 由于 SQL Server 中的主键默认是您的聚集键,因此所有这些聚集键规则都将适用。 好的聚类关键是:

    • 窄(4-8 字节是完美的)
    • 静态(从不或几乎从不改变)
    • 唯一(否则SQL Server将不得不添加一个4字节的唯一符......)
    • 不断增加(即 INT IDENTITY 是完美的),以减少由于索引结构中的页面拆分而导致的索引和页面碎片

迄今为止,有关 SQL Server 索引(以及该做什么和该避免什么)的最佳、最权威和最详尽的资源是 Kimberly Tripp's blog, especially her Indexes category 。很棒的东西!

关于sql-server - SQL表的PK的数据类型如何影响查询性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6498592/

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