mysql - 150 个 tinyint 或 1 个 varchar(300)?

标签 mysql performance

我需要将 150 个不同的小整数值(范围从 0 到 7)存储到 MySQL 数据库表行中。每次有 SELECT、INSERT 或 UPDATE 时,所有这些都会被一起读取和写入。该表大部分会被更新,会有 1 次插入,然后对该行进行大约 1000 次更新。删除和选择的情况很少发生(如果有的话)。

从性能角度来看,使用 150 个tinyint 列还是 varchar(300) 哪个更好?

我主要关心的是,当结果集准备好时,MySQL 处理 150 个列定义所花费的时间与双倍大小(如果缓存的话,需要双倍 RAM)的时间相比。我预计会有数十万行,因此每一位性能都很重要。

最佳答案

我将它们存储在 BINARY 列中,每个字节一个。数据集应该很容易适合内存,150b*500k = 75Mb。我认为后处理字节数组的开销不会超过使用查询和选择列的数据库开销。 INSERT 和 UPDATE 会占用数据库的解析时间,而且构造起来也很难看。不过,差异可能在毫秒范围内,所以我会做对应用程序端的解码有意义的事情。

关于mysql - 150 个 tinyint 或 1 个 varchar(300)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10711380/

相关文章:

php - 日期等于或大于 DateTime 的 Laravel Eloquent

mysql - Laravel 4.1 - 显示 mysql 列 TIME 的时间格式

php/mysql - 向 MySQL 发送多个数据

c++ - 监视 Windows 移动设备上每个线程的 CPU 使用率

performance - Hibernate 会导致获取不需要的数据吗?

php - 统计返回的记录 MySQL Doctrine

MySQL、ODBC驱动 Access 排序问题

c++ - 为什么 glReadPixels 这么慢并且有其他选择吗?

bash - 在短片中分割视频会导致某些内容为空?

java - 分词和排列之间的时间复杂度差异