> For the complete documentation index, see [llms.txt](https://docs.pentaho.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.pentaho.com/install/9.3-install/multidimensional-data-modeling-in-pentaho/configure-mondrian-engine/edit-the-mondrian-properties-file/performance-mondrian-engine.md).

# Performance

One of the key performance goals for Analyzer is to push as many operations to the database as possible. This is particularly important when querying many high-cardinality dimensions because you want Mondrian to only process the combinations that make sense and not a huge cartesian product which is sparsely populated.

Pay particular attention to the following engine properties:

```
mondrian.expCache.enable=true
```

Improves the performance of summary numbers such as ranks and running sums.

```
mondrian.native.crossjoin.enable=true
```

This is an essential property which enables pushdown to the database so that Mondrian does not perform large cross joins in memory.

```
mondrian.native.filter.enable=true
```

Particularly important for pushdown of Not In and Excludes filters.

```
mondrian.native.nonempty.enable=true
```

This should be set to false to optimize Mondrian SQL generation given the MDX patterns generated by Analyzer. Analyzer uses non-empty cross joins to push down joins between high cardinality attributes to the database. If this property is set to false, there are many non-empty cross joins which would get evaluated by Mondrian instead because Mondrian pushes down the individual arguments such as **dimension.members**.

```
mondrian.olap.maxConstraints=1000
```

Used in conjunction with the**mondrian.native.ExpandNonNative** property. This should be set to as large as the underlying database can support.

```
mondrian.native.ExpandNonNative=true
```

Allows pushdown of even more cross joins by materializing the cross join inputs into IN lists. For example, a cross join whose inputs are MDX functions can first have their inputs evaluated to members and then convert the cross join into native evaluation.

```
mondrian.olap.elements.NeedDimensionPrefix=true
```

Analyzer always generates dimension qualified members so no need to spend time searching for members on different dimensions.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.pentaho.com/install/9.3-install/multidimensional-data-modeling-in-pentaho/configure-mondrian-engine/edit-the-mondrian-properties-file/performance-mondrian-engine.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
