MySQL主键和VARCHAR(255)

时间:2012-01-11 22:26:37

标签: mysql primary-key

我有一个使用VARCHAR(255)作为表的主键的数据库,它们看起来像GUID。 Int不会更好地表现吗?

2 个答案:

答案 0 :(得分:2)

这取决于您的存储引擎,但一般来说int / bigint会更好。如果您使用innodb,由于聚簇索引的工作方式,uuid / guid对于主键来说是一个糟糕的选择。阅读此blog以了解有关它的更多信息。总而言之,密钥是按范围存储的,因为uuids是随机的,它们会使插入和查找效率降低,因为你会通过读取和写入每行的整个内存块来破解缓存。

答案 1 :(得分:0)

Ints在磁盘上占用的空间更少,因此在搜索时您需要更少的I / O.只要范围符合您的需要,我会说int会更快。