排序和取值问题
龙四 2011-02-18 02:06:33 表A:a_id(pk), a_name, a_bid
表B:b_id(pk), b_priority, b_weightness
假设A的数据是B的20倍,B表200w数据,现在要取2w或5w B的记录,且要关联A(主要是取关联后a_name字段)
sql:
select * from
(select b_id,rownum as num from
(select b_id from B order by b_priority desc,b_weightness desc)
) tmp,A a where tmp.b_id=a.a_bid and num<=50000
问题:
rownum和order by在一起的时候,order by不是主键,就先取值再排序,就导致需要用上面的语句来解决问题
但是在上述语句中,查询套查询,还要全表扫描,排序,根据假设的数据量,效率是不是很低
有没有更好的办法达到要求呢