SQL查询效能优化
表结构:
SQL> desc m1
Name   Type         Nullable Default Comments  
------ ------------ -------- ------- --------  
STATUS VARCHAR2(3)  Y                          
QTY    NUMBER(20,5) Y                          
DAT    VARCHAR2(12) Y                          
表数据(测试用):
SQL> SELECT * FROM M1;
STATUS                    QTY DAT
------ ---------------------- ------------
AAA                   1.00000 20081208
AAA                   1.00000 20081209
AAA                   1.00000 20071209
BBB                   1.00000 20070909
BBB                   1.00000 20080909
SQL>
现在的需求是查询出STATUS为最小的,DAT为最大的那条记录
最终结果:
STATUS                    QTY DAT
------ ---------------------- ------------
AAA  		      1.00000 20081209
我的实现方法:
SELECT STATUS,QTY,DAT FROM (
        SELECT DISTINCT STATUS,QTY,MAX(DAT)OVER(PARTITION BY STATUS,QTY) DAT FROM M1)  
WHERE STATUS = (
       SELECT MIN(STATUS) FROM (
              SELECT DISTINCT STATUS,QTY,MAX(DAT)OVER(PARTITION BY STATUS,QTY) DAT FROM M1))
但是,由于表的数据量很大,我想请问除此之外有没有效能高点的查询方法
谢谢!
------解决方案--------------------
select STATUS,QTY,DAT FROM
  select STATUS,QTY,DAT,rank () over (oder by status asc,dat desc) rk from m1)
where rk=1;