gpt4 book ai didi

mysql - 字符串作为主键的性能损失?

转载 作者:行者123 更新时间:2023-11-29 18:00:17 24 4
gpt4 key购买 nike

使用字符串而不是 bigint 等作为主键会有什么性能损失?字符串比较比整数比较昂贵得多,但另一方面,我可以想象 DBMS 在内部会计算哈希键以减少惩罚。

我正在开发的一个应用程序使用字符串作为多个表(MySQL)中的主键。改变这一点并不简单,我想知道可以在性能方面获得什么来证明这项工作的合理性。

最佳答案

on the other hand I can imagine that internally a DBMS will compute hash keys to reduce the penalty.

数据库需要维护一个带有键的B-Tree(或类似的结构),以便对它们进行排序。

如果 key 经过哈希处理并将其存储在 B 树中,则可以快速检查 key 的唯一性 - 仍然可以有效地查找 key 。但是您将无法有效搜索范围数据(例如使用LIKE),因为B树不再根据字符串值排序。

所以我认为大多数数据库确实将字符串存储在 B 树中,这可以(1)比数值占用更多的空间,并且(2)要求 B 树如果以任意顺序插入 key (没有像数字 pk 那样增加值的概念),则重新平衡。

实践中的处罚范围可以是微不足道的,也可以是巨大的。这一切都取决于用法、行数、字符串键的平均大小、连接表的查询等。

关于mysql - 字符串作为主键的性能损失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48425304/

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