答案 0 :(得分:1)
不考虑表,索引等的继承成本,这些成本要么你不能或不想做任何事情,并假设你的意思是磁盘足迹。
如果你有一个带有int的表和一个VarChar(128)int是4,那么varchar(128)是132字节*行数。
这是下载/安装吗?如果是这样,你可能会发现谷歌搜索DBCC ShrinkDB,恢复选项很有用。
小心你去哪里,把你的内容换成单词,或截断你的varchars意味着你的代码中有点混乱。同样正常化/非规范化具有自己的成本。您要注意的文件大小也是备份,而不是磁盘上的mdb,默认情况下它总是增长,因此将是最大容量。如果你一直在开发它并且没有备份,那可能会非常愚蠢。
右 首先,每次空间用完时,紧凑型将从1到16页,取决于新的需求。 第二个空间耗尽意味着没有足够的连续存储行,并且CE不会恢复空间,除非你压缩,所以如果你做了很多插入然后一些删除,那么它更多的是可行的,更多的插入部分或全部使用的空间不会被重复使用。
所以在你尝试这个契约之前,否则它将具有可疑的价值</ p>
在代码中或附加SQL Server管理器
选择*
将为您提供有关您的数据库的一大堆信息
那么这只是一个基于Data_type和Character_Maximum编写查询来总结的问题。然而,这将为您提供每行的理论最大值。因此NVarChar(50)最多有100个字节,(图像是一个演出!)但如果它中有“Fred”,它将是8 .. 一旦你有一个行大小乘以表的计数 实际大小意味着对每行的每个实际列进行whapping并执行数据化,这对CE来说可能很难。
或者你可以在代码中完成所有操作, 如果你想对它进行重击并回来并没有问题是我的客人,但你没有付给我足够的钱为你做。 :)
虽然我刚刚发现了这一点,但是对谷歌来说,也许它会做你想做的事。
答案 1 :(得分:1)
请参阅此MS知识库文章:http://support.microsoft.com/kb/827968 - 使用Compact API缩小数据库(如果适用)(或通过Visual Studio Server Explorer中的GUI)