Functional dependency optimizations in Mondrian
Eric McDermid just checked in a nice new feature into Mondrian which
optimizes the SQL generated by MySQL. It takes advantage of the fact
that in MySQL, if some of your GROUP BY
columns are unique, you can
leave the other columns out of the GROUP BY
clause, and MySQL does
less work.
In some cases, a lot less work. MySQL implements GROUP BY
by sorting,
and since this reduces the volume of data being sorted, Eric reports
significant performance improvements. Unfortunately it only works on
MySQL, since MySQL is the database I know which has this feature.
See the latest schema documentation for more details.
I’ll note that we reserve the right to change the syntax a little in future versions. In mondrian-4.0 we’re adding physical schemas, which will include much more information about tables and relationships, so it would make sense to declare unique keys along with that. But rest assured that even if we do change the syntax, the feature will still be present.