150个tinyints或一个varchar(300)?

时间:2012-05-22 23:11:20

标签: mysql performance

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

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

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

1 个答案:

答案 0 :(得分:2)

我将它们存储在BINARY列中,每个字节一个。数据集应该很容易适合内存,150b * 500k = 75Mb。我认为后处理字节数组的开销不会超过使用查询和选择列的数据包开销。 INSERT和UPDATE将从DB中获取解析时间,同时还需要构造丑陋。差异可能在毫秒范围内,所以我会在你的应用程序端做有意义的解码。