我注意到,与SQL Server相比,MySQL的磁盘空间要多10倍。我通过在每个数据库中创建包含100列和1000行的表来找到它:
VarChar(MAX)
INT
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))
然后我在两个数据库的所有列中插入了带有GUIDS的1000行。以下是我得到的结果:
为什么这两个数据库之间有这么不同?即使我在新的空数据库上进行此测试,我也会看到相同的结果。
这是我使用的MySQL表定义:
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)
这是SQL Server的一个:
.deploy('my_app', 'some_branch_on_github)
答案 0 :(得分:2)
在SQL Server中,将数据存储在固定宽度字段中占用的空间量与任何其他值(即see here)的宽度相同。
因此,您的SQL Server表有100,000个值,您插入的值存储为最大宽度TEXT
。
在MySQL中,您使用的是可变大小的TEXT
字段。我相信数据甚至不需要存储在实际的表中。 {{1}}的存储开销似乎没有占用太多空间。这似乎比SQL Server的开销要小得多,这解释了你的观察结果。