假设我用size=200
设置varchar
字段。我的问题是,在MySQL,我会失去内存上的每一个新的插入到数据库,即使该字段包含一个空值?如果它将会丢失,有什么方法来保存他们的记忆吗?
- 留给数据库引擎
- 不,你不能
- 这并不重要
关键字是dynamic rowsize
:动态表特性
只要是varchar和mysql,不,你不使用这200个字符插入空
然而,这是一个空间问题,而不是内存问题。这有很大的不同,因为现在磁盘空间非常便宜,所以通过尝试使用更少的存储空间来优化架构是没有意义的。
恰恰相反,我宁愿将该字段定义为char(200),并在每行上浪费多达200个字符,而作为回报,DB引擎只需通过计算行数就可以知道存储中的确切偏移量,从而节省时间和cpu周期,这并不便宜。