怎样知道Sql语句执行的进度(如果这条Sql语句需要执行很长时间)?(100分)

  • 主题发起人 主题发起人 goldenhill
  • 开始时间 开始时间
好像没有这种方法!!!
 
程序员大本营的离线数据库部分实现了这个功能
但我我还没有研究出来(没空看)
你可以找找它的原吗看看,(我现在手上没有)
基本表现还可以,最大的一次误差是查询进度到80%时已经结束查询了。
我猜它是用的估计的方法,因为以前大富翁上讨论过的,sql不是面向过程
的,恐怕要完全得到它的查询进度不大可能。
 
close;
open;
之间的时间
 
在rxlib里就有可以实现你要的功能的vcl
 
问题关键是怎样在查询过程中得到服务器的信息,并得到 CPU 时间处理事件。
我也想知道。
 
p........................;
var
begintime,endtime: integer;
begin
begintime:=gettickcount;
.....
query1.sql.add(.........);
........
endtime:=gettickcount;
edit1.text:=floattostr((endtime-begintime)/1000)+'秒';
end;
 
呵呵,这样计算出来的时间是不准确的,只能根据目前的进度大概估算。
 
sql server 7 有查询预览,6.5好象也可
 
据说Rxlib里的DBProgress可以显示数据库的操作进度,但是我不清楚怎么用。
但是我在很多地方都看到说这是没有办法实现的。
 
这个跟数据库有很大的关系。
 
精确得到时间不可能,每种数据库都不同,就算是你让oracle公司的开发人员说说它的
SQL执行进度,也只是估计出来的,因为SQL执行时要受到许多方面的影响,同样的SQL在
不同的环境下,执行时间肯定不同...
 
不大可能把,知道Sql语句执行的时间容易,但知道Sql语句执行的进度就难了
 
有位斑竹说过不行
 
开始时间和终止时间相减不就可以了吗!
 
不可能吧。
影响查询时间因素太多,所以要估算几乎不可能。
难道让后台数据库不断地发消息回来告知执行到哪里了?
 
应该没办法的
 
没办法!例如:用 SELECT 命令从一个表中选出指定记录,没有选出前将无法
知道总计有多少记录,也就无从计算选出完成的比例(进度),其它也是如此,
除非预先知道工作总量。
 
后退
顶部