0

我有以下情况:我在报告中有 16 个查询,它们SELECT在开始时都使用几乎相同的语句:

SELECT 
    sereresystem.registrationtime,
    CONVERT(VARCHAR(11),DATEADD(DAY,DATEDIFF(DAY,0,sereresystem.registrationtime),0),120) AS [Day], 
    CAST(datepart(YEAR,sereresystem.registrationtime) AS CHAR(4))+' / KW '+CAST(Datepart(ISO_WEEK,sereresystem.registrationtime) AS VARCHAR(2)) AS [Week],
    Datepart(m,DATEADD(MONTH,DATEDIFF(MONTH,0,sereresystem.registrationtime),0)) AS [Month],
    CAST(datepart(YEAR,sereresystem.registrationtime) AS CHAR(4))+' / '+CAST(Datepart(q,DATEADD(MONTH,DATEDIFF(MONTH,0,sereresystem.registrationtime),0)) AS VARCHAR(1)) AS [Quarter],
    Datepart(year,DATEADD(MONTH,DATEDIFF(MONTH,0,sereresystem.registrationtime),0)) AS [Year],
    COUNT(sereresystem.caseid) AS [Total]
FROM sereresystem
    INNER JOIN sereregeneral ON sereresystem.caseid=sereregeneral.caseid
    INNER JOIN sereresperou ON sereresystem.caseid=sereresperou.caseid
WHERE sereregeneral.inpcha IN(@Inputchannel)
    AND sereresperou.assrol IN(@Assigned_Role) 
    AND sereresystem.registrationtime BETWEEN @Starttime AND @Endtime
    AND sereresystem.referencenumber=sereregeneral.renure
GROUP BY sereresystem.registrationtime

我需要日、周、月、季度和年的值在 SSRS 中的这些值之后动态分组。我现在遇到的问题是报告太慢了。是否有可能缩短这 5 个日期选择语句的处理时间?

-edit- 现在是完整的查询

4

1 回答 1

0

您应该定义“该死的慢”以及您的期望/要求是什么。

假设这 16 个查询不相同,那么将它们作为单独的数据集运行通常会比组合它们更快。这是由于现代服务器、SQL 和 SSRS 的并行架构。

我会查看表索引 - 如果您不确定,那么在 FROM 子句之后引用的每一列上单独的索引将是一个好的开始。

于 2013-03-13T00:48:53.660 回答