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つの日付選択ステートメントの処理時間を短縮する可能性はありますか?

-編集-完全なクエリになりました

4

1 に答える 1

0

「くそー遅い」と、期待/要件を定義する必要があります。

16 個のクエリが同一ではないと仮定すると、それらを個別のデータセットとして実行する方が、通常は結合するよりも高速です。これは、最新のサーバーである SQL と SSRS の並列アーキテクチャによるものです。

テーブルのインデックス作成を確認します。よくわからない場合は、FROM 句の後に参照されるすべての列に個別のインデックスを作成することをお勧めします。

于 2013-03-13T00:48:53.660 に答える