Mysql中的medium int与int性能比较问题

9
我有一个简单的用户表,我猜我最多会有30万个用户。
目前我正在使用:
 CREATE TABLE users
 (
         id INT UNSIGNED AUTOINCREMENT PRIMARY KEY,
         ....

当然,我有许多其他表格,其中用户(id)是FOREIGN KEY。
我读到由于id不会使用INT的最大值,因此最好使用MEDIUMINT,这将提供更好的性能。
这是真的吗?
(我正在Windows Server 2008上使用mysql)

1
请参见https://dev59.com/7EjSa4cB1Zd3GeqPGIQp,该链接讨论了MySQL中mediumint的3字节数字意义。 - ax.
4个回答

14

我会考虑有时使用MEDIUMINT..在30万行上.. MEDIUMINT 提供了足够的空间高达16M行(无符号)。

当你使用索引时,不仅仅是关于“更小的表格尺寸”.. 在一个2700万行的表格上..将2列从INT更改为MEDIUMINT使我省下1GB(索引+表格数据),所以从2.5GB变为1.5GB,差异是巨大的。


5

这被称为微观优化,并不是一个问题。
尝试根据实际经验提出性能问题,而不是想象中的问题。而且分析总是有助于区分一个问题和另一个问题。

至于“最大300k” - 在现实生活中,数字往往会出人意料地增长。为什么要给自己挖一个陷阱呢?


3

在性能方面不应该有区别,唯一的优势是表格大小稍微小一些。无论如何,对于只有30万行的数据,您不必担心。


0

如果你关心速度的微优化,那就使用int

磁盘读取操作会读取一块字节,所以读取4个字节和读取3个字节是一样的。

但是由于3个字节的整数对于CPU来说不是本地的,需要在使用之前进行转换(memcpy到一个4/8字节的整数中),导致了额外的开销,而4个字节的整数对于CPU来说是本地的,可以直接使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接