使用tinyint
或smallint
(适用时)而不只是int
有多大差异?或者将char
字段限制为所需的最小字符数?
这些选择会影响性能还是仅仅分配空间?
答案 0 :(得分:7)
在具有非常大的表的“索引”字段上,字段的大小会对性能产生很大影响。在非索引字段上,它仍然不得不写出额外的数据。
也就是说,大表调整大小的停机时间甚至可能是几分钟或几个小时,所以不要让它们比你想象的要小。
答案 1 :(得分:5)
是的,它也影响了性能。
如果索引较大,则从磁盘读取它们需要更长的时间,并且可以在内存中缓存较少的索引。
答案 2 :(得分:2)
我经常看到这三个架构设计缺陷导致问题:
我从来没有见过一个好心的(即不仅仅为所有cols使用varchar(255)),但保守选择错误的数据大小会导致严重的性能问题。重要的是,我的意思是因子10.我经常看到算法设计缺陷(缺少索引,通过线路发送太多数据等)导致更大的性能命中。
答案 3 :(得分:0)
在某些情况下,两者都有。但是,imo,更多的是设计问题,而不是性能和存储方面的考虑因素。您没有制作所有内容varchar(...)
的原因是因为它无法准确反映应该存储哪种数据,并且会降低数据的完整性和类型安全性。