use*_*110 1 mysql performance varchar integer innodb
我有很多表,有数百万行,有MySQL.这些表用于存储日志行.我在VARCHAR(50)中有一个字段"country".此列上有一个索引.它是否会改变在一个国家的INT而不是这个国家领域存储的性能?
谢谢 !
你的问题比最初看起来要复杂一些.简单的答案是Country最多50个字符的字符串.用4字节整数替换它应该减少字段所需的存储空间.较少的存储意味着处理查询和较小索引时的I/O开销较少.当然有异常情况.如果country通常具有NULL值,则当前存储可能比具有id更有效.
但是,当你考虑让这个领域保持最新时,它会变得有点复杂.与参考表的一个区别是,这些国家现在已经标准化,而不是特别的名称.一般来说,这是一件好事.另一方面,各国确实会随着时间的推移而发生变化,所以你必须时不时地加入"南苏丹"或"东帝汶".
如果您的数据库插入/更新很重,那么更改国家/地区字段需要在参考表中查找正确的值 - 并且可能在那里插入新记录.
我的观点是"gosh ......最初以这种方式设置数据库是个好主意".此时,您需要了解维护国家/地区参考表对应用程序的影响,以获得使数据结构更高效,更准确的小型性能增益.