用Bde TQuery查询数据 返回太约60000条时
再查询 查询会 把上一次查询的语加进去
有谁能解释一下这个问题吗?(查了三天了) with qry_temp do
begin
close;
sql.clear;
sql.Text :=('select *,nHs=1 from v_Member_ClientInteger where nMemberId=2');
open;
end; -->这里返回60000多条数据 再查询 速度奇慢! 发现执行这个语句时用sql 事件探测器发现 下面这个语句执行了两条语句 (select *,nHs=1 from v_Member_ClientInteger where nMemberId=2)
(select 11)
with querywork do
begin
close;
sql.clear;
sql.Text :=('select ''11''');
open;
end;
为什么执行qry_temp 会去执行 querywork 的语句
如果只返回几百条则不行出这样的问题
再查询 查询会 把上一次查询的语加进去
有谁能解释一下这个问题吗?(查了三天了) with qry_temp do
begin
close;
sql.clear;
sql.Text :=('select *,nHs=1 from v_Member_ClientInteger where nMemberId=2');
open;
end; -->这里返回60000多条数据 再查询 速度奇慢! 发现执行这个语句时用sql 事件探测器发现 下面这个语句执行了两条语句 (select *,nHs=1 from v_Member_ClientInteger where nMemberId=2)
(select 11)
with querywork do
begin
close;
sql.clear;
sql.Text :=('select ''11''');
open;
end;
为什么执行qry_temp 会去执行 querywork 的语句
如果只返回几百条则不行出这样的问题
sql事件跟踪器会把上次查询的语句再加进去。。
不大可能吧。
我用ADO测试了没有加进去。而且速度也比BDE快一倍
而且BDE查询数据少时怎么不会把上次查询的语句再加进去?
但是现在不可以改Ado了大麻烦了
看看就知道了!
可以采用楼上的用ShowMessage(sql.Text);测试
假定你每次都是如下写的,那不会sql叠加,(因为有个sql.clear;)with querywork do
begin
close;
sql.clear;
sql.Text :=('select ''11''');
open;
end;
但是如果缺少此句子(不知道你下面这句是怎么增加到sql的
(select *,nHs=1 from v_Member_ClientInteger where nMemberId=2)
(select 11)
估计你这是直接用sql.add();
自己再测试下
我敢保证绝对不是delphi 语法逻辑错误 绝对有Sql.clear ,
show 出来语句没有问题 而且我查询时不是在同一个Query中查询
(一个是qry_temp ,另一个是querywork )我怀疑是不是 BDE 的Database 处理大量数据问题
ShowMessage(qry_temp.SQL.Text);
和
ShowMessage(querywork.SQL.Text);
当你按了查询之后,如果发现Show出来的跟你
在sqlmon查看的是不一样的话,啊我就无语了,
到时候你最好截个图给大家看看!