为了帮助我衡量这一点,你能告诉我可以插入到MS Access数据库引擎表中的最大行数吗?
为了满足表的定义,所有行必须是唯一的,因此需要一个唯一的约束(例如PRIMARY KEY,UNIQUE,CHECK,Data Macro等).
编辑:我意识到有理论上的限制,但我感兴趣的是实际的(而不是实际的)现实生活的限制.
解决方法
> Jet / ACE文件按数据页组织,这意味着当您的记录边界与数据页不对齐时,会有一定的松弛空间.
>行级锁定将大大减少可能记录的数量,因为它会为每个数据页强制一个记录.
>在Jet 4中,数据页大小增加到4KB(从Jet 3.x的2KBs).由于Jet 4是支持Unicode的第一款Jet版本,这意味着您可以存储1GB的双字节数据(即1,000,000个双字节字符),并打开Unicode压缩,2GB数据.所以,记录的数量将受到您是否对Unicode进行压缩的影响.
>由于我们不知道Jet / ACE文件中的标题和其他元数据占用了多少空间,也没有确定房间索引存储需要多少空间,因此理论计算总是在实际中.
为了获得最有效的存储空间,您需要使用代码来创建数据库而不是Access UI,因为Access创建纯Jet不需要的某些属性.这不是说有很多这些,因为设置为Access默认值的属性通常不会设置(只有当您将其从默认值更改时才会创建该属性 – 这可以通过循环访问字段属性集合,即Access表设计器中为某个字段列出的许多属性不在属性集合中,因为尚未设置),但您可能希望将自己限制为特定于Jet的数据类型(超链接字段例如是Access).
我只是浪费了一个小时,使用Rnd()来填充定义为类型字节的4个字段,在四个字段上使用复合PK,并且永远追加足够的记录以获得任何大部分的2GB.超过200万条记录,档案不到80MB.我终于退出了700万700万的纪录,文件压缩到了184MB.接近2GB的时间将超过我愿意投资的时间!