连接同一个sql6.5的数据库服务器,执行同样命令:
select ITEM FROM test where ITEM='ONE'
执行效率相差很多,这是为什么???
d1:tdatabase,q1:tquery
d2:tadoconnection,q2:tadoquery
运行以下语句(假设d1,d2已open)
var
start:dword
begin
start=gettickcount();
q1.close;
q1.open;
showmessage(inttostr(gettickcount()-start)); //只要几十毫秒
start=gettickcount();
q2.close;
q2.open;
showmessage(inttostr(gettickcount()-start)); //要一千多毫秒
end
请问一下这是为什么?李维的书上不是说ado效率高吗???
select ITEM FROM test where ITEM='ONE'
执行效率相差很多,这是为什么???
d1:tdatabase,q1:tquery
d2:tadoconnection,q2:tadoquery
运行以下语句(假设d1,d2已open)
var
start:dword
begin
start=gettickcount();
q1.close;
q1.open;
showmessage(inttostr(gettickcount()-start)); //只要几十毫秒
start=gettickcount();
q2.close;
q2.open;
showmessage(inttostr(gettickcount()-start)); //要一千多毫秒
end
请问一下这是为什么?李维的书上不是说ado效率高吗???
q1.open,q2.open连接
button2中执行以上语句测试,就是这样!
select ITEM FROM test where ITEM='ONE'
go
--新建连接
set textsize 2147483647 set ansi_defaults on set cursor_close_on_commit off set implicit_transactions off
GO
SET NOEXEC ON select ITEM FROM test where ITEM='ONE' SET NOEXEC OFF
GO
--断开连接
--新建连接
set textsize 2147483647 set ansi_defaults on set cursor_close_on_commit off set implicit_transactions off
go
SET FMTONLY ON select ITEM FROM test where ITEM='ONE' SET FMTONLY OFF
go
--断开连接
why?可能时间就时花在连接上!
create table test (id int)
用adoquery查询如下语句
1.select id(max,id) from test //很慢
2.select 6
select id(max,id) from test //就很快了,这是为什么
aadoquery.connection:=adoconnection,
以下的test为sql6.5数据库中的某张表,只有id字段,且记录数不超过3条,
1.aadoquery.sql.text:='select id=isnull(max(id),0) from test'
以下的6为随便的一个常数
2.aadoquery.sql.text:='select id=isnull(max(id),0) from test select 6'
同时执行以下语句:
var
start:dword;
begin
with adoquery do
begin
start:=gettickcount();
close;
open;
//语句1显示的时间大概为2000左右,语句2显示的时间大概为100左右
showmessage(inttostr(gettickcount()-start));
end
end
前面两个语句的效率相差这么多,这是为什么,请各位高手帮忙!!!
我用两个button,button1中
q1.open,q2.open连接
button2中执行以上语句测试,就是这样!
###################################要用两个BUTTON才行。这是系统处理内存时耗些时间。