那位大侠能帮我优化一下这条语句,自从结构上优化就可以了,改成最简单的语句就可以了,就是去掉嵌套,去掉in之类的
select rid,rname,sname,cname
from ringinfo,singerinfo,clipinfo
where singerinfo.sid in (select sid from singerinfo where ssex=1)
and singerinfo.sid=ringinfo.sid
and clipinfo.cid in (select cid from clipinfo where ctime=2010)
and clipinfo.cid=ringinfo.cid
and rid in (
select rid
from numberinfo
where num>70 and num<90
and rid in (
select rid
from orderinfo
where to_char(odate,'yyyymmdd') between '20100101' and '20100131'
))
order by rid ;
select rid,rname,sname,cname
from ringinfo,singerinfo,clipinfo
where singerinfo.sid in (select sid from singerinfo where ssex=1)
and singerinfo.sid=ringinfo.sid
and clipinfo.cid in (select cid from clipinfo where ctime=2010)
and clipinfo.cid=ringinfo.cid
and rid in (
select rid
from numberinfo
where num>70 and num<90
and rid in (
select rid
from orderinfo
where to_char(odate,'yyyymmdd') between '20100101' and '20100131'
))
order by rid ;
FROM ringinfo, singerinfo, clipinfo, numberinfo, orderinfo
WHERE singerinfo.ssex = 1
AND singerinfo.sid = ringinfo.sid
AND clipinfo.ctime = 2010
AND clipinfo.cid = ringinfo.cid
AND singerinfo.rid = numberinfo.rid
AND numberinfo.num > 70
AND numberinfo.num < 90
AND numberinfo.rid = orderinfo.rid
AND orderinfo.odate BETWEEN DATE'2010-01-01' AND DATE'2010-01-31'
ORDER BY rid;