SQLServer2000中一个表有5万条数据。主键和外键已经创建了索引,我一次调入客户端的查询视图中大概有100条记录,发现requery一次竟然花费3秒多。

  • 主题发起人 主题发起人 WangZhaoHui
  • 开始时间 开始时间
W

WangZhaoHui

Unregistered / Unconfirmed
GUEST, unregistred user!
SQLServer2000中一个表有5万条数据。主键和外键已经创建了索引,我一次调入客户端的查询视图中大概有100条记录,发现requery一次竟然花费3秒多。但有时我打开了企业管理器胡点了些什么,Requery一次只需要1秒。是不是在delphi中没有打开索引啊。请专家指点 ( 积分: 100 )<br />SQLServer2000中一个表有5万条数据。主键和外键已经创建了索引,我一次调入客户端的查询视图中大概有100条记录,发现requery一次竟然花费3秒多。但有时我打开了企业管理器胡点了些什么,Requery一次只需要1秒。是不是在delphi中没有打开索引啊。请专家指点
 
8知道<br>学习中。。。。。。。。。。。。。<br>等高手
 
第一次查询慢一点,最好:1.加上索引;2.优化SQL语句
 
有索引啊。在delphi中难道需要再打开索引吗。
 
索引文件的第一个字段,需要包含在你的where条件中,最好是第一个条件,否则索引文件是不起作用的。
 
以我的经验应该是客户端显示时占用了比较多的时间,你可以试试&nbsp;<br>with&nbsp;dataset&nbsp;do<br>disablecontrols;<br>open;<br>enablecontrols;<br>end;<br>看是不是很快?
 
同意荷塘新月的说法
 
荷塘新月&nbsp;能举个列子吗,<br>auwa:&nbsp;我只是dataset1.requery;就几秒。慢啊。和disablecontrol还没什么关系。主要是requery慢
 
requery&nbsp;当然啦&nbsp;企业管理器&nbsp;放到内存拉
 
bsense:你说我没听懂啊。有什么招能让requery快一些吗。因为客户端有多个,我总得刷新啊。
 
第一次查询是比较慢的,以后会快点。<br>并不在乎你胡乱点写什么。<br>就算你连续查询多次,除第一次较慢,其他的都差不多。<br>第一次查询后,一些信息会保存到内存里,以后直接从内存里获取相关信息,速度较快。所以数据库占用的内存越来越大。直到所有相关信息都到了内存里。<br>还有就是索引字段用到where&nbsp;里才有用。
 
索引字段用到where&nbsp;里才有用.查询是按照where&nbsp;后面字段的顺序,而不是索引的顺序.
 
REQUERY&nbsp;指重新查询吗?我看是过滤了吧?
 
REQUERY是指数据集adodataset1.requery;是刷新一下的意思
 
在结果集很大的情况下,企业管理器并非一次把所有的数据都传送过来,而是后台继续传输,这点和查询管理器有区别,通常情况下,我们写的程序大概和查询管理器的机制差不多,都是全部传输过来以后再显示的。<br>如果你的查询结果集只有100条记录,应该用不到这种机制,但是如果你的结果集很大,只是在本地控制显示其中的100条,那么就有问题了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
676
import
I
后退
顶部