怎么样让AdoDataSet连接表的速度变快?

siaosa 2003-08-23 04:44:36
为打开SQL数据库的table1表,并对table1表进行查询,修改,新增等操作。
table1表记录有一百多万条
设置:
AdoDataSet.CommandType:=cmdTable;
AdoDataSet.CommandText:=table1;
当在程序中执行
AdoDataSet.Active:=True;

程序有十多秒钟没响应,该应用程序使用内存达到500多M.有什么好的优化办法吗?

如果用where进行限制,那么用户得到的只是表中的部分数据。如果用户要执行doDataSet.next,ADODataSet.first之类的改变当前记录的操作时,那用户可能不能够正确的看到表中的该记录了。
...全文
82 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenylin 2003-08-26
  • 打赏
  • 举报
回复
这样肯定是慢的
可以将ADOdataset.EXEcuteOptions设为异步方式,在客户端就感觉不到速度慢了.而且最好使用ADODataSet,因为它是由ADO的原生结果集对象最大封装而来
siaosa 2003-08-26
  • 打赏
  • 举报
回复
更正一下
ADODataSet.MaxRecords设置为100 与select top 100 * from tablename的效率是一样的,
如果使用select top 1000 * from tablename,当用有大于1000笔记录,那么用户执行ADODataSet.Last时,用户只能够看到第1000条记录,而不能够真正看到表中的最后一笔的记录。
siaosa 2003-08-25
  • 打赏
  • 举报
回复
ADODataSet.MaxRecords设置为100,系统照样很慢。
如果使用select top 1000 * from tablename,当用有大于1000笔记录,那么用户执行ADODataSet.Last时,用户只能够看到第1000条记录,最后一笔的记录。
samcrm 2003-08-24
  • 打赏
  • 举报
回复
分批返回记录。
DelphiStudy 2003-08-24
  • 打赏
  • 举报
回复
呵呵,来晚了,大家说的挺全了,我也学习学习。
我只知道索引的设置对数据查询能提高不少。
yjw1018 2003-08-24
  • 打赏
  • 举报
回复
同意
checkyvc6 2003-08-23
  • 打赏
  • 举报
回复
1
将AdoDataset的缓冲cachsize设大点1000左右
2
index 可以提高n倍
3
升级服务器
myadvice 2003-08-23
  • 打赏
  • 举报
回复
楼上frogshero(光棍菜) 兄和 DWGZ() ( ) 讲都讲完了

另外就是如果没有必要不要把所有的字段取回,这也比较花时间
wjt1982 2003-08-23
  • 打赏
  • 举报
回复
可以通过设置adoconntion和adodateset的属性,如每次的记录数,游标等等了
DWGZ 2003-08-23
  • 打赏
  • 举报
回复
MaxRecords
frogshero 2003-08-23
  • 打赏
  • 举报
回复
select top 1000 * from tablename
frogshero 2003-08-23
  • 打赏
  • 举报
回复
select top 1000 from tablename應該看到正確的記錄吧?

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧