首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >字符串作为SQL数据库中的主键

字符串作为SQL数据库中的主键
EN

Stack Overflow用户
提问于 2009-02-05 19:40:23
回答 11查看 153.3K关注 0票数 205

我不太熟悉数据库和它们工作原理背后的理论。从性能的角度来看(插入/更新/查询),使用字符串作为主键比使用整数慢吗?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2009-02-05 19:44:17

从技术上讲是这样的,但是如果字符串作为主键是有意义的,那么您可能应该使用它。这完全取决于要创建的表的大小和将作为主键的字符串的长度(更长的字符串==更难比较)。对于有数百万行的表,我不一定要使用字符串,但是在较小的表上使用字符串所带来的性能减慢与使用一个与数据无关的整数所带来的麻烦是微不足道的。

票数 222
EN

Stack Overflow用户

发布于 2009-02-05 19:46:43

使用字符串作为主键的另一个问题是,因为索引总是按顺序放在一起,所以当创建一个新的键时,必须对索引进行重新排序。如果使用自动编号整数,则新键仅添加到索引的末尾。

票数 87
EN

Stack Overflow用户

发布于 2012-03-21 07:05:10

插入到具有聚集索引的表中,如果插入发生在序列的中间,则不会导致重写索引。它不会导致组成数据的页面被重写。如果页面上有空间,行将被放置在该页面中。单个页面将被重新格式化,以将行放置在页面中的正确位置。当页面已满时,将发生页面拆分,页面上的一半行转到一页,另一半行转到另一页。然后将这些页重新链接到包含具有聚集索引的表数据的页的链接列表中。至多,您将最终编写2页的数据库。

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/517579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档