0

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

性能方面,使用 150 个 tinyint 列还是 varchar(300) 更好?

我主要关心的是 MySQL 在准备好结果集时处理 150 个列定义所需的时间,而如果缓存则需要双倍 RAM。我希望有数十万行,所以每一点性能都很重要。

4

1 回答 1

2

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

于 2012-05-23T01:13:45.737 回答