用子查询与把语句分开来写,速度上哪个更快? 欢迎讨论(50分)

一成

Unregistered / Unconfirmed
GUEST, unregistred user!
用子查询写
query1.close;
query1.sql.text:='select name from stu where deptid=(select id from dept where deptname="九八三班")';
query1.open;

分开写如下
query1.close;
query1.sql.text:='select id from dept where deptname="九八三班"';
query1.open;
mydeptid:=query1.fieldbyname('id').asinteger;
query1.close;
query1.sql.text:='select name from stu where deptid="'+mydeptid+'"'
query1.open;

有没有人调试过,哪一个更快?
 
上面的快。
 
同意! 上面的快。
 
这种情况下用子查询要快一些,因为两者的结果都是通过数据库的过程来完成的,如果你
想要程序执行的更好一些,可以将你的SQL语句写成存储过程,然后客户端带参数来查询。。。。。

 
sql的推荐写法是

select stu.name from stu join dept on stu.deptid = dept.id
where dept.deptname="九八三班"

速度上:
1.返回数据量少:效率差不多的
2.返回的数据量很大:第二种效率差,如果需要通讯的话,效率更差
而且需要维护二个结果集,

 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
846
SUNSTONE的Delphi笔记
S
T
回复
5
查看
192
wjiachun
W
顶部