以下のような式を使用する Visual Studio 2008 でマトリックス レポートを作成すると、プレビューに必要以上に時間がかかります。
=Fields(Parameters!ColumnGroupParam.Value).Value
同じレポートがレポート サーバーに配置され、レポート マネージャー内で表示される場合、またはレポートが Visual Studio ではなくレポート ビルダーを使用して設計されている場合、問題はなく、レポートはすばやく生成されます。
SQL Server プロファイラーからの結果を見ると、Visual Studio からクエリを実行すると、クエリが結果セットを返すのにかなりの時間がかかっています。
レポート マネージャー: 期間 = 1885
Visual Studio: 期間 = 327946 (173x 長い!)
一般に、グループに式を使用しなくても、Visual Studio からクエリを実行すると、クエリの実行が遅くなるように見えます。SQL Server 2008 R2 および SQL Server 2012 でこれを試したとき、同じ動作がありました。
他の誰かが以前にこの動作に遭遇し、適切な修正を見つけましたか?
再現する手順:
AdventureWorksDW2008 データベースを使用して、次のクエリをデータセットとして使用し、Visual Studio 2008 内でマトリックス レポートを作成します。
SELECT
PC.EnglishProductCategoryName AS Category
,PSC.EnglishProductSubcategoryName AS Subcategory
,P.EnglishProductName AS ProductName
,G.EnglishCountryRegionName AS Country
,G.StateProvinceName AS State
,FIS.SalesAmount
FROM dbo.FactInternetSales FIS
INNER JOIN dbo.DimProduct P
ON FIS.ProductKey = P.ProductKey
INNER JOIN dbo.DimProductSubcategory PSC
ON P.ProductSubcategoryKey = PSC.ProductSubcategoryKey
INNER JOIN dbo.DimProductCategory PC
ON PSC.ProductCategoryKey = PC.ProductCategoryKey
INNER JOIN dbo.DimCustomer C
ON FIS.CustomerKey = C.CustomerKey
INNER JOIN dbo.DimGeography G
ON C.GeographyKey = G.GeographyKey
2 つのパラメーター RowGroupParam と ColumnGroupParam を作成し、両方とも使用可能な値 Category、Subcategory、ProductName を指定します。
式 =Fields(Parameters!RowGroupParam.Value).Value を使用して行グループを作成し、式 =Fields(Parameters!ColumnGroupParam.Value).Value を使用して列グループを作成します。行グループと列グループのテキスト ボックスの値に同じ式を使用します。
詳細テキスト ボックスに SalesAmount を使用します。
行グループ パラメーターに [カテゴリ] を選択し、列グループ カテゴリに [サブカテゴリ] を選択して、レポートを実行します。レポートが生成されるまで 30 秒待ちます。
同じレポートをレポート サーバーに配置し、同じパラメーターを使用してレポートを実行します。レポートは数秒で生成されます。