最大限度地减少大型数据中SQL查询的时间消耗

最大限度地减少大型数据中SQL查询的时间消耗,sql,sql-server,azure,Sql,Sql Server,Azure,在这里,我正在Azure SQL中运行以下查询,使用BI工具从大量卷中获取数据。BI工具显示以下错误查询超出了以下查询允许的最大执行时间10秒: SELECT M + ' ' +Convert(varchar,CY) TimeSpan, ISNULL(SUM([Australia]), 0) AS [Australia], ISNULL(SUM([India]), 0) AS [India], ISNULL(SUM([America]), 0) AS [

在这里,我正在Azure SQL中运行以下查询,使用BI工具从大量卷中获取数据。BI工具显示以下错误
查询超出了以下查询允许的最大执行时间10秒

SELECT M + ' ' +Convert(varchar,CY) TimeSpan,
       ISNULL(SUM([Australia]), 0) AS [Australia],
       ISNULL(SUM([India]), 0) AS [India],
       ISNULL(SUM([America]), 0) AS [America]
       FROM (
                select Distinct DeviceID,RegionName, Month(LastCommunicated) CM, Year(LastCommunicated) CY, 1 Cnt
                ,LEFT(DATENAME(MONTH,LastCommunicated),3) M
                from Region
                WHERE LastCommunicated BETWEEN DATEADD(year,-1,GETDATE()) and dateadd(day,datediff(day,0,GETDATE()),0)
             ) a 
               PIVOT (Sum(Cnt) FOR RegionName IN ([Australia],[India],[America])) AS Result
       GROUP BY CY,CM,M + ' ' +Convert(varchar,CY)
        ORDER BY CY,CM

除了在BI中增加执行时间外,是否还有其他方法可以解决此问题?

我们需要查看查询的执行计划。子查询表“a”是否会更好地按月份分组,而不是按不同的左边(DATENAME(Month,LastCommunicationed),3)通信次数与通信长度或总分钟数之间的差异可能对您很重要,这可能是您选择“a”的原因以这种方式或另一种方式进行子查询。