我有以下情况:我在报告中有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-现在是完整的查询
答案 0 :(得分:0)
你应该定义“该死的慢”以及你的期望/要求。
假设16个查询不相同,那么将它们作为单独的数据集运行通常比组合它们更快。这是由于现代服务器,SQL和SSRS的并行体系结构。
我会检查表索引 - 如果你不确定那么在FROM子句之后引用的每一列上的单独索引都是一个好的开始。