gpt4 book ai didi

SQL Server 表 -(或可能是任何 SQL 表)没有主键会影响性能吗?

转载 作者:行者123 更新时间:2023-12-01 10:07:19 27 4
gpt4 key购买 nike

我有一个表,我没有在其中显式定义主键,它并不是真正需要的功能......但是一位同事建议我添加一个列作为唯一主键以随着数据库的增长提高性能......

谁能解释一下这是如何提高性能的?

没有使用索引(我知道我可以添加索引来提高性能,但不清楚主键如何提高性能。)

细节

主表是用户事件的日志,每个条目都有一个自动递增的列,所以它已经是唯一的,但它没有设置为主键

此日志表引用详细说明特定事件的事件表,由主表中的自动递增条目引用。因此该值仅在主日志表中是唯一的,事件表中可能有 100 个条目引用该值作为标识符(即,对于 session 212,Niall 做了这 500 件事)。

正如您可能猜到的,大部分数据都在事件表中。

最佳答案

Kimberly Tripp(索引女王)在她出色的博客文章中清楚地表明,The Clustered Index Debate Continues... ,在您的 SQL Server 表上拥有一个聚集索引 是有益的 - 对于所有 操作 - 是的,甚至对于插入也是如此!

引用金佰利的话:

Inserts are faster in a clustered table (but only in the "right" clustered table) than compared to a heap. The primary problem here is that lookups in the IAM/PFS to determine the insert location in a heap are slower than in a clustered table (where insert location is known, defined by the clustered key). Inserts are faster when inserted into a table where order is defined (CL) and where that order is ever-increasing.

由于您的主键默认会在您定义的列上自动创建聚簇索引,我认为是的,在您的 SQL Server 表(甚至是日志表)上拥有一个主(聚簇)键确实会对性能产生积极影响.

关于SQL Server 表 -(或可能是任何 SQL 表)没有主键会影响性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9152988/

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