我注意到,在MySQL中,与Server相比,表可以占用10倍的磁盘空间。通过在每个数据库中创建包含100列和1000行的表,我发现了这一点:
TEXT类型的可空列。VarChar(MAX)的100个可空列INT类型的主键。然后,我在两个数据库的所有列中插入了1000行GUIDS。以下是我得到的结果:
为什么这两个数据库之间有这么大的不同?即使在新的、空的数据库上进行这个测试,我也会看到同样的结果。
下面是我使用的MySQL表定义:
create table data1(
id MEDIUMINT NOT NULL AUTO_INCREMENT,
column1 text null,
column2 text null,
column3 text null,
-- ...
column99 text null,
column100 text null,
PRIMARY KEY (id))下面是SQL Server one:
create table data1(id int IDENTITY(1,1) PRIMARY KEY,
column1 varchar(max) null,
column2 varchar(max) null,
column3 varchar(max) null,
-- ...
column99 varchar(max) null,
column100 varchar(max) null)发布于 2016-07-18 04:11:32
在Server中,将数据存储在固定宽度字段中,占用的空间与任何其他值(即字段的宽度(see here) )相同。
因此,您的Server表有100000个值,您将其插入存储为最大宽度VARCHAR。
在MySQL中,您使用的是可变大小的TEXT字段。我认为这些数据甚至不需要存储在实际的表格中。TEXT的存储开销似乎不会占用那么大的空间。这似乎比SQL Server少得多,这说明了您的观察。
https://stackoverflow.com/questions/38428418
复制相似问题