Group by在Oracle中的SQL Query中花费了很长时间

时间:2017-03-07 11:40:53

标签: sql oracle performance query-optimization

当我在查询中使用group来获取几列的总和时,它开始花费太多时间。

示例: -

SELECT  
    A.ID PROJECT_ID,
    REGION.LEVEL2_NAME REGION,
    A.LOCATION LOCATION,
    A.DEPT DEPT,
    REPLACE(A.ROLE_NAME, ',', '') ROLE_NAME,
    A.MONTH_START,
    TO_CHAR(A.MONTH_START,'MON YYYY') MONTH_LABEL,
    Sum(A.value1),Sum(A.value2)
FROM 
(/here is my Select Query which gives flat data with some 2 UNION Queries/ )A
 INNER JOIN table REGION ON A.column1= REGION.column1
GROUP BY  
    A.ID, 
    A.ROLE_NAME, 
    A.LOCATION, 
    A.DEPT, 
    A.UNIT_OF_MEASURE,
    REGION.LEVEL2_NAME, 
    A.MONTH_START 

请建议。

1 个答案:

答案 0 :(得分:0)

什么是“当我添加一个组时,它开始花了很长时间”?鉴于评论中的其他信息,我希望它需要很长时间。在添加组之前,您运行的查询可能会在执行查询时相当快地返回,然后根据您的客户端工具获取行的子集200-500。添加组时,数据库必须读入查询的所有行,因为它必须在返回任何单行之前聚合所有行。在4000万行,这可能需要一段时间。

我刚刚在这里发帖。但我对这个问题的评论是,在寻找性能帮助时,您需要提供其他信息。完整的查询会有所帮助,你已经遗漏了查询的很大一部分。所涉及的表上的数据模型,一些示例数据和一些其他数据卷。根据需要擦洗以保护信息。