mysql - mysql作为主键的字符串性能惩罚?

  显示原文与译文双语对照的内容
117 0

使用字符串作为主键而不是 bigints 等等的性能损失是什么?字符串比较比整型比较要昂贵得多,但另一方面,我可以想象在内部,DBMS将计算散列键以减少损失。

在多个表( MySQL ) 中使用字符串作为主键使用的应用程序。改变这一点并不简单,我想知道什么能得到性能明智的解决工作。

时间:原作者:0个回答

149 1

另一方面,我可以想象在内部DBMS将计算散列键以减少惩罚。

数据库需要维护一个收费的b 树,以使它的有序。

如果密钥被散列并存储在b 树that可以快速检查密钥--的唯一密钥仍然可以有效地查找。但是,你无法搜索有效的范围的数据( 。由于 LIKE 树不再按照字符串值排序,因此。

,( 1 ) 在树中存储字符串,如果键插入的空间是 ,那么会花费的空间,而( 2 ) 需要树 balanced 。

实践中的收费可以从重要到巨大。这完全取决于使用情况。行数。字符串键的平均大小。Join 表的查询等等。

原作者:
...