Access数据库太大问题的几种解决方法为什么只有我文件大小的1/10。2.为什么我删除了数据,但数据库大小没有减少?3、为什么我在ole字段中存了几张图片,数据库就变大了,而且增加的速度超过了图片的总体积?4、为什么我的数据库记录很少,体积只有20多MB5,每次变大都要手动压缩?有没有办法自动压缩它?答:1、2,只需要打开即可原因是:Access在删除记录或执行其他需要临时数据的操作后,并不会物理删除这些无用数据,只有在对数据库进行压缩和修复时。.就像把文件放入windows的回收站并不能增加可用空间一样,必须清空回收站是一个道理。具体操作请参考以下FLASH动画:手动压缩修复数据库。ole引擎会在文件数据前面加一段信息,让ole引擎处理你放入的文件,所以size会变大。4.请检查您的数据库中是否有包含ole字段的表。ole字段可以存储非常大的文件,导致容量正常增长。查看数据库中的表格和报告,看看是否有嵌入背景的图片。Access中所有的背景图片都是以bmp格式存储的,即使你原来指定的是jpg格式,Access也会自动将文件格式转换为bmp格式再存储。不管是背景还是控件,只要有图片,音量就会异常增大。还有,如果你的程序设计成在运行时大量使用临时数据,用完就删除,也会造成体积激增。5、可以设置退出时自动压缩,步骤如下:菜单->工具->选项->正常关闭时压缩->转贴勾选以上,原创勾选以下。以上是数据库变大后的几种解决方案。我想说的是如何防止数据库变得这么大。从程序员的角度来看,它可能对网站管理员没有用。只是也许我可以给Asp+Access的程序作者一些小建议。.使用多个数据库,而不是一个。可以粗略地指定一个范围,比如使用1号数据库从0到1W。1W到2W使用2号数据库。如何使用?。.Con和rs定义多个。.Con1属于1号库,con2属于2号库。.rs1属于1号库,rs2属于2号库。.添加:当数据达到XW柱时使用新的conX和rsX。.修改:查询要修改的身份证号码。.指定数据库执行操作。删除:同修改。有一个地方不太好用这个解决。比如我要查询用户排名,查询积分最大的10个用户。因为用了多个数据库,用了多个rs。.我找到了两种方法,你可以根据自己的喜好使用。第一个:NextrsB.MoveNextWendrs.UpdateBatchEndif'返回合成后的新记录集SetUnionRs=rsEndFunction'调用合并函数PrivateSubCommand1_Click()DimrsAsRecordsetSetrs=UnionRs(rsA,rsB)'合并rsA和rsBSetDataGrid1.DataSource=rsEndSub第二种:当记录很多的时候,用循环的方式确实比较慢,反之则比较快,可以用一个临时表来做:假设你的两个数据库位置是:C:\testA.mdb和C:\testB.mdbDimcnA作为新ADODB.Connection,cnB作为新ADODB.Connection,rs作为新ADODB.RecordsetcnA.Open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\TestA.mdb;UserId=admin;Password=;"cnB.Open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\TestB.mdb;UserId=admin;Password=;"cn.Execute("select*intotempfromtableA")'将tableA的数据插入到临时表temp中(具体查询数据语句自己改)cn1.Execute("INSERTINTO[C:\testA.mdb].tempSELECT*来自表B")'tableB的数据添加到testA的临时表temp中(具体查询数据语句可自行更改)rs.Open"temp",cnA,adOpenDynamic,adLockReadOnly,adCmdTable使用多个相同的数据库,随机选择数据库访问时。这样比较方便,但是不会减少数据库的大小,只是减少了数据库的连接数。也在一定程度上减轻了数据库的压力。受访问镜像站点的启发。添加一个随机数到conn.asp(通常是数据库文件)。.例如,如果有10个相同的数据库,那么一个小于10的随机整数是可以的。这样,之前数据库的压力就分散到10个数据库上了。虽然不一定平均。.(如果你的算法好的话,做到平均不难)记住一定要有后台克隆数据库的操作选项,当然手动操作也是可以的。好的。完成的。希望对各位程序员有所帮助。我希望你能写出更好的程序。谢谢。以上部分全文转载,不加修改。前几天采集了36000条数据,发现空闲主机上没有数据库空间了。转为mdb后,生成了一个庞大的网站,现在经常宕机。总而言之,如果用access作为网站的数据库,集中精力制作HTML页面会很痛苦。PrivateFunctionUnionRs(rsAAsRecordset,rsBAsRecordset)AsRecordsetDimrsAsNewRecordset,i%Fori=0TorsA.Fields.Count-1'设置记录集标题列rs.Fields.AppendrsA.Fields(i).Name,rsA.Fields(i).Type,adFldMayBeNull+adFldIsNullable+adFldUpdatableNext'将rsA添加到rsIfNotrsA.EOFThenrsA.MoveFirstIfrs.State=adStateClosedThenrs.OpenWhileNotrsA.EOFrs.AddNewFori=0Tors.Fields.Count-1rs(i)=rsA(i)NextrsA.MoveNextWendrs.UpdateBatchEndIf'将FTrshenB添加到rsIfNotrsB.EMoveFirstIfrs.State=adStateClosedThenrs.OpenWhileNotrsB.EOFrs.AddNewFori=0Tors.Fields.Count-1rs(i)=rsB(i)
