1. A method comprising: receiving, by a query optimizer executing on one or more processors of a computing device, a multi-fact star schema query that is executable to retrieve data from two or more fact tables of a database, wherein the two or more fact tables each references a common dimension table of the database; internally transforming, by the query optimizer, the multi-fact star schema query into a group of single-fact sub-queries, wherein each sub-query of the group of single-fact sub-queries references only one of the two or more fact tables; enumerating, by the query optimizer, the group of single-fact sub-queries to determine a query execution plan; and executing, by a runtime execution engine executing on the one or more processors, the multi-fact star schema query according to the query execution plan to retrieve the data from the two or more fact tables of the database.
1. A method comprising: receiving, by a query optimizer executing on one or more processors of a computing device, a multi-fact star schema query that is executable to retrieve data from two or more fact tables of a database, wherein the two or more fact tables each references a common dimension table of the database; internally transforming, by the query optimizer, the multi-fact star schema query into a group of single-fact sub-queries, wherein each sub-query of the group of single-fact sub-queries references only one of the two or more fact tables; enumerating, by the query optimizer, the group of single-fact sub-queries to determine a query execution plan; and executing, by a runtime execution engine executing on the one or more processors, the multi-fact star schema query according to the query execution plan to retrieve the data from the two or more fact tables of the database. 3. The method of claim 1 , wherein enumerating the group of single-fact sub-queries further comprises: determining a set of join combinations, each of the join combinations having a first join partition and a second join partition, wherein the first and second join partitions each comprise a reference to at least one of the two or more fact tables of the multi-fact star schema query; generating candidate query execution plans for one or more of the set of join combinations; and selecting, based on decision criteria, one of the candidate query execution plans for executing the multi-fact star schema query.