文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>【ORACLE】在结果集字段中只有一列要使用组函数MAX,使用GROUP BY效率并不是最高的。

【ORACLE】在结果集字段中只有一列要使用组函数MAX,使用GROUP BY效率并不是最高的。

时间:2010-12-04  来源:土星的狗狗

SELECT MAX(C.INVDATE), D.HAIER_YEAR, D.HAIER_SWEEK_TO_YEAR, C.GOODS_ID  FROM ECC_OMS.V_TJ_STOCK C, ECC_OMS.DATE_WEEK_YEAR D WHERE C.INVDATE = D.SDATE GROUP BY D.HAIER_YEAR, D.HAIER_SWEEK_TO_YEAR, C.GOODS_ID

执行计划如下:

SELECT STATEMENT, GOAL = ALL_ROWS            13641    651105    21486465 

HASH GROUP BY            13641    651105    21486465  

 HASH JOIN            6580    1026081    33860673  

  TABLE ACCESS FULL    ECC_OMS    DATE_WEEK_YEAR    5    2397    35955  

  TABLE ACCESS FULL    ECC_OMS    V_TJ_STOCK    6563    1026081    18469458

 

 

想了一会,试着用ORDER BY DESC和ROWNUM=1变通一下:

SELECT C.INVDATE, D.HAIER_YEAR, D.HAIER_SWEEK_TO_YEAR, C.GOODS_ID  FROM ECC_OMS.V_TJ_STOCK C, ECC_OMS.DATE_WEEK_YEAR D WHERE C.INVDATE = D.SDATE   AND ROWNUM = 1 ORDER BY C.INVDATE DESC

执行计划如下:

SELECT STATEMENT, GOAL = ALL_ROWS            3    1    33 

COUNT STOPKEY                      

  NESTED LOOPS            3    1    33   

    TABLE ACCESS BY INDEX ROWID    ECC_OMS    V_TJ_STOCK    2    1026081    18469458    

      INDEX FULL SCAN DESCENDING    ECC_OMS    V_TJ_STOCK_IDX01    2    1       

    TABLE ACCESS BY INDEX ROWID    ECC_OMS    DATE_WEEK_YEAR    1    1    15    

      INDEX UNIQUE SCAN    ECC_OMS    DATE_WEEK_YEAR    1    1   

 

请各位大侠指教。

相关阅读 更多 +
排行榜 更多 +
瓢虫少女

瓢虫少女

飞行射击 下载
潜艇鱼雷

潜艇鱼雷

飞行射击 下载
网络掠夺者

网络掠夺者

飞行射击 下载