使用列所需的确切数据类型是否有任何性能优势?或者只是存储优化?
例如,我正在创建一个用户表,我确信总共只有200个用户。当我操作服务器中的数据时,执行一些select / update / insert / delete,对于users_id列使用TINYINT - UN
或仅使用INT
之间是否有任何性能差异?
这同样适用于用户的名字。我知道,目前,名字长度最长的用户是48,但我不知道将来是否会有一个新用户插入名称长度为65个字符的表中。目前使用VARCHAR(48)
仅保留所需的长度是否有任何性能优势,或者我是否可以避免不断检查每个新用户的列允许长度并仅使用VARCHAR(255)
?
答案 0 :(得分:2)
两种情况都没有什么优势。
对于这个数字,您确实获得了轻微的性能优势。通常,整数为4,tinyint为1个字节。因此,如果您有多个较小的字段,那么您的记录将会更小。较小的记录意味着更少的数据页面,最终的查询速度稍快。当你开始有大量记录时会显示。
对于varchar
,你甚至不具备这种优势。 varchar(48)
和varchar(255)
都占用相同的空间(长度大于255时,有一个加法字节)。值确定此数据类型的空间。
在其他情况下,它可以产生很大的不同。特别是,将日期存储为本机格式通常很重要,既可以利用日期/时间功能,也可以更好地利用索引。