请问两条SQL语句的效率

dfwxj 2011-12-05 01:04:40
表说明:
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")


请问:哪种方式效率高些?
...全文
74 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dfwxj 2011-12-05
  • 打赏
  • 举报
回复
是的,用视图代码会很简单。有些复杂的查询必须借助中间环节的VIEW


ACMAIN_CHM 2011-12-05
  • 打赏
  • 举报
回复
[Quote]个人感觉从视图查询多走了一道路,效率没有用查询语句高,是不是这样的?[/Quote]视图的主要目的
1) 简化语句
2) 容易数据库权限管理(比如仅授某VIEW的权限,没有基础表的权限)
3) 实现数据库模式的隔离。 (比如你改了表结构,然后仅修改[VIEW中的定义即可,不需要去修改程序代码)
至少查询效率,则看具体情况,有些会VIEW提高速度,有些则未必。
dfwxj 2011-12-05
  • 打赏
  • 举报
回复
另:仓库表的WHCODE是主索引,权限表的OPID+WHCODE是主索引
dfwxj 2011-12-05
  • 打赏
  • 举报
回复
十分感谢,请大家喝酒~~~~~~

另外:我可以直接上述查询语句直接查询,也可以在服务器上建一个视图,然后在程序中直接查询视图。

个人感觉从视图查询多走了一道路,效率没有用查询语句高,是不是这样的?
十豆三 2011-12-05
  • 打赏
  • 举报
回复
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")
wwwwb 2011-12-05
  • 打赏
  • 举报
回复
索引情况如何?第1个是左连接,第2个是内连接,在一般情况下,内连接效率>外连接,
因为你2个SQL语句都 以ywh 表为基准,效率应该相差不大
ACMAIN_CHM 2011-12-05
  • 打赏
  • 举报
回复
有索引的情况下,第一个快一些。

但实际上,由于你的操作员不会有很大数据量级的yopwh.whcode,所以两个查询几乎没有差别。

2,727

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧