当前位置: 代码迷 >> VFP >> 请教两条SQL语句的效率
  详细解决方案

请教两条SQL语句的效率

热度:4378   发布时间:2013-02-26 00:00:00.0
请问两条SQL语句的效率
表说明:
1、系统信息表
sysinfo.opid 当前操作员号

2、仓库档案表
ywh.whcode 仓库编号
ywh.whname 仓库名称

3、操作员对仓库的操作权限表
yopwh.opid 操作员号
yopwh.whcode 可操作仓库编号


目标:列出当前操作员可操作的仓库

1、用连接
SQLExec(lnhandle,"select ywh.whcode,whname from ywh left join yopwh on ywh.whcode=yopwh.whcode where opid=?sysinfo.opid","curjswh")

2、用嵌套查询
 SQLExec(lnhandle,"select whcode,whname from ywh where whcode in (select whcode from yopwh where opid=?sysinfo.opid)","curjswh")
   

请问:哪种方式效率高些?

------解决方案--------------------------------------------------------
有索引的情况下,第一个快一些。

但实际上,由于你的操作员不会有很大数据量级的yopwh.whcode,所以两个查询几乎没有差别。
------解决方案--------------------------------------------------------
索引情况如何?第1个是左连接,第2个是内连接,在一般情况下,内连接效率>外连接,
因为你2个SQL语句都 以ywh 表为基准,效率应该相差不大
------解决方案--------------------------------------------------------
SQLExec(lnhandle,"Select A.whcode,A.whname From ywh A Inner Join yopwh B On A.whcode=B.whcode Where B.opid=?sysinfo.opid","curjswh")
------解决方案--------------------------------------------------------
引用个人感觉从视图查询多走了一道路,效率没有用查询语句高,是不是这样的?
  相关解决方案