为打开SQL数据库的table1表,并对table1表进行查询,修改,新增等操作。
table1表记录有一百多万条
设置:
AdoDataSet.CommandType:=cmdTable;
AdoDataSet.CommandText:=table1;
当在程序中执行
AdoDataSet.Active:=True;
程序有十多秒钟没响应,该应用程序使用内存达到500多M.有什么好的优化办法吗?
如果用where进行限制,那么用户得到的只是表中的部分数据。如果用户要执行doDataSet.next,ADODataSet.first之类的改变当前记录的操作时,那用户可能不能够正确的看到表中的该记录了。
MaxRecords
可以通过设置adoconntion和adodateset的属性,如每次的记录数,游标等等了
1
将AdoDataset的缓冲cachsize设大点1000左右
2
index 可以提高n倍
3
升级服务器
分批返回记录。
这样肯定是慢的
可以将ADOdataset.EXEcuteOptions设为异步方式,在客户端就感觉不到速度慢了.而且最好使用ADODataSet,因为它是由ADO的原生结果集对象最大封装而来