关于优化查询的问题。
表1-供应商 表2-零件 表三-供应关系
表1:S
列:snum,sname,city (供应商编号,名称,所在城市)
表2:P
列:pnum,pname,weight,size(零件编号,名称,重量 尺寸)
表3:SP
列:snum,pnum,dept,quan(供应商编号,零件编号,使用部门,数量)
要查询,在'济南'供应'2cm轴承'数量大于'10000'个的'供应商名称'。
给出的查询语句是:
select sname from s,p,sp where s.snum=sp.snum and sp.pnum=p.pnum and s.city='济南' and p.pname='2cm轴承' and
sp.quan>10000;
要求从新写一条优化过的查询语句,使系统计算量减少,查询速度提高。
-----------------------------------------------
按照我刚刚学到的那点内容 我的思路是
先分别在三张表中查出 满足( 供货数量大于10000的供应商编号,所在城市='济南',零件名称='2cm轴承')条件的记录,
然后用这些结果做连接查询 找出 满足 s.snum=sp.snum and sp.pnum=p.pnum 的记录
因为原来的查询是直接进行三表连接 然后在结果中选出满足条件的行 笛卡尔乘积的计算量一定比 用 筛选后的结果进行连
接查询的计算量要大的多。
。。。
可是我不知道该怎么写这条语句 囧
如果把语句改成(只更改了where语句后面条件的顺序):
select sname from s,p,sp where sp.quan>10000 and p.pname='2cm轴承' and s.city='济南' and s.snum=sp.snum and
sp.pnum=p.pnum;
能起到优化的作用吗?
如果不能,应该怎么写这条语句才能起到优化的作用?