【发布时间】:2015-11-11 22:09:31
【问题描述】:
我在 Java Web 应用程序中使用 MONDRIAN 服务器和 OLAP4j API,在我的查询附近添加 where 时出现性能问题。 MDX 查询如:
SELECT
CrossJoin(
{[Product.ProductHierarchie].[AllProduct]}
, {[Measures].[Quantity]}
) ON COLUMNS,
[Client.ClientHierarchie].[AllClient].Children ON ROWS
FROM [sales_data_cube]
0.3 秒完成。但是当添加 where 子句时,例如 WHERE ([Period].&[start_period]:[Period].&[end_period]),
要获得开始/结束期间之间的销售额,查询需要 250 秒 和一个小型事实表(8500 行)。
我应该怎么做才能有更好的表现?
应用程序在内存限制 = 8GB 的 tomcat 服务器上运行,数据库服务器:MySQL 5.6.17
【问题讨论】:
-
而不是
WHERE子句尝试将其移动到像这样的子选择 -FROM ( SELECT {[Period].&[start_period]:[Period].&[end_period]} ON 0 FROM [sales_data_cube] ) -
Mondrian 无法识别 subselect 子句,它不支持 MDX 子查询。
标签: performance mdx mondrian olap4j