Ich schreibe eine MDX-Abfrage, in der ich einige Kennzahlen auswählen und während der Auswahl habe ich eine where-Bedingung, in der ich ein Kreuz mache zwei Fakten zu verbinden, ist ein Datum und ein anderes eine eindeutige ID und Ich übergebe 2000 eindeutige IDs und die Abfrage dauert ungefähr 20 Minuten, um auszuführen und das Ergebnis zu geben.MDX Query Optimierung bei der Verwendung von CrossJoin
Hier finden Sie Abfrage für die gleiche
SELECT {[Measures].[TOTAL1], [Measures].[TOTAL2], [Measures].[TOAL3]} ON COLUMNS,
" + " {TOPCOUNT(FILTER([ID].[Ids].MEMBERS,
[ID].CurrentMember > 0),
5,[Measures].[TOTAL])} " + "ON ROWS
FROM [CHARTS]
WHERE({[Date].&[2015-09-01 00:00:00.0]}*{[NUM].[1],[NUM].[10],"
+ "[NUM].[18],[NUM].[47],[NUM].[52],[NUM].[105],[NUM].[126],[NUM].[392],"
+ "[NUM].[588],[NUM].[656],[NUM].[995],[NUM].[1005],[NUM].[1010],[NUM].[1061]})";
Die gerade mdx, ohne dass die String-Manipulation Operatoren (+) ist wie folgt:
SELECT
{
[Measures].[TOTAL1]
,[Measures].[TOTAL2]
,[Measures].[TOAL3]
} ON COLUMNS
,{
TopCount
(
Filter
(
[ID].[Ids].MEMBERS
,
[ID].CurrentMember > 0
)
,5
,[Measures].[TOTAL]
)
} ON ROWS
FROM [CHARTS]
WHERE
{[Date].&[2015-09-01 00:00:00.0]}
*
{
[NUM].[1]
,[NUM].[10]
,[NUM].[18]
,[NUM].[47]
,[NUM].[52]
,[NUM].[105]
,[NUM].[126]
,[NUM].[392]
,[NUM].[588]
,[NUM].[656]
,[NUM].[995]
,[NUM].[1005]
,[NUM].[1010]
,[NUM].[1061]
};
Können Sie mir bitte erklären, die verschiedenen Leistungsoptimierungstechniken für das Selbe.
taten unter Hilfe meines Vorschlag, oder bin ich in Ordnung, es zu löschen? – whytheq