144万行表查询SQL的性能帮助 - 非常慢

时间:2015-04-30 15:56:29

标签: sql sql-server performance large-data

我的查询需要帮助。该表有1.44亿行,这是一个阶段表(我们从另一个表中插入数据)。之前我没有索引,工作已运行超过9个小时。我使用多列(AdvertiserName,MediaPlanName,MediaPlanNumber,CreativeDescription)将非聚集索引添加到此表中,因为此组合使其唯一。但即使是现在,执行计划也会显示“表扫描”而不是非聚集索引扫描,并且性能没有提高。

这是下面的查询,使用SSIS将数据汇总到csv文件需要很长时间。如何提高此查询的性能?请帮忙!! 运行需要很长时间。 :(

SELECT
    AdvertiserName,
    AdvertiserID,
    MediaPlanNumber,
    MediaPlanName,
    PublishingSiteName,
    SiteName,
    Week_Begin_Monday,
    CreativeDescription,
    SUM(CAST(ViewCount AS BIGINT)) ViewCount,
    SUM(CAST(ClickCount AS BIGINT)) ClickCount,
    Media,
    Segment_Name,
    Segment_CD,
    Group_Name,
    Group_CD,
    Channel,
    LOB,
    Creative_Message,
    Creative_Category,
    Creative_Type,
    SUM(GRP) GRP,
    Intended_Delivery_Screen

FROM Stage_MM240(NOLOCK)
GROUP BY    AdvertiserName,
            AdvertiserID,
            MediaPlanNumber,
            MediaPlanName,
            PublishingSiteName,
            SiteName,
            Week_Begin_Monday,
            CreativeDescription,
            Media,
            Segment_Name,
            Segment_CD,
            Group_Name,
            Group_CD,
            Channel,
            LOB,
            Creative_Message,
            Creative_Category,
            Creative_Type,
            Intended_Delivery_Screen

1 个答案:

答案 0 :(得分:2)

如果没有WHERE子句,最快的执行将始终通过表扫描。如果它使用除了唯一聚簇索引(基本上是PK)之外的任何索引,它将使磁盘访问加倍。

我建议您尝试限制您正在阅读的数据。如果你不能,那你只需要等待......