Hi, We are currently using a combination of SQL Server relational tables and values coming from an SSAS database. The results coming from the SSAS db are being joined with tables to produce the final result. In order to achieve that we are using a linked server for the MDX queries. The linked server uses OLE DB MSOLAP Provider and the servers are on the same machine.The issue that we have observed is as follows: When the rows returned are around 20,000, it is approximately the same speed as running directly against the SSAS db. However as the rows are increasing, the time almost doubles for each 30,000 extra rows returned, whereas the executing on the cube only changes marginally.The below MDX query via linked server takes 10 seconds. Running directly on cube via SSMS query takes 9 seconds. For 50,000 then the cube takes 10 seconds, but the Linked Server Query takes 18 seconds. As the data set gets large the difference between them variables massively. 100,000 rows takes 12 seconds on SSAS, and 30 seconds via linked server.EXEC('SELECT {[Measures].[MemberId], [Measures].[Clicks]} ON COLUMNS,SUBSET([Item].[CompanyItem].[CompanyItem], 0, 20000)ON ROWSFROM [AnalysisServicesCube]')AT [Test.Cube]I understand that there is some overhead in sending MDX queries through linked server, but was wondering if someone has any ideas on why the gap in performance grows dis-proportionally to the number of rows and if it is possible to limit the effect. Any suggestions more than welcome.
↧