用子查询与把语句分开来写,速度上哪个更快? 欢迎讨论(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.返回的数据量很大:第二种效率差,如果需要通讯的话,效率更差
而且需要维护二个结果集,

 
多人接受答案了。
 
后退
顶部