Mysql medium int与int performance

时间:2010-05-22 09:47:24

标签: mysql performance datatable

我有一个简单的用户表,我想我将拥有的最大用户数为300,000。

目前我正在使用:

 CREATE TABLE users
 (
         id INT UNSIGNED AUTOINCREMENT PRIMARY KEY,
         ....

当然我有很多其他用户(id)是FOREIGN KEY的表。

我读过,因为id不会使用INT的最大值,所以最好使用: MEDIUMINT,它将提供更好的性能。

是真的吗?

(我在Windows Server 2008上使用mysql)

4 个答案:

答案 0 :(得分:10)

我会考虑在300K行上使用MEDIUMINT .. MEDIUMINT给你足够的空间,最多16M行(无符号)。

当您使用索引时,不仅仅是“较小的表大小”。差异可能很大 在一个27M行表...从INT更改为2列到MEDIUMINT节省了我1GB(索引+表数据)所以它从2.5GB变为1.5GB。

答案 1 :(得分:5)

这称为微优化,而不是问题 尽量只根据真实的经验而不是想象力来问(首先是你自己)表现问题。 性能分析总是有助于区分彼此。

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

答案 2 :(得分:3)

不应该有性能差异,唯一的优势是表格尺寸略小。无论如何,对于300'000行,您不必关心。

答案 3 :(得分:0)

如果您关心速度微优化,请使用int

磁盘读取访问将读取一个字节块,因此读取4个字节将与读取3个字节相同。

但是由于3个字节的整数不是CPU的本机,mediumint需要先转换才能使用(将memcpy转换为4/8字节的整数),这会造成开销,而4字节的整数是CPU的本机并且可以直接使用。