繁体   English   中英

Mysql medium int与int performance

[英]Mysql medium int vs. int performance

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

目前我正在使用:

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

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

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

这是真的吗?

(我在Windows Server 2008上使用mysql)

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

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

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

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

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

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

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

但由于3个字节的整数对于CPU来说不是原生的, mediumint需要先转换mediumint才能使用(memcpy为4/8字节整数),从而导致开销,而4字节整数对于CPU来说是原生的,可以直接使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM