You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-08-01 06:46:55 +03:00
MCOL-4543 Subquery optimization.
For a query of the form: SELECT COUNT(c2) FROM (SELECT * FROM t1) q; where t1 contains 10 columns c1, c2, ... , c10. We currently create an intermediate RowGroup in ExeMgr with a row of the form (1, c2_value1, 1, 1, 1, 1, 1, 1, 1, 1), i.e. for all the columns of the subquery which are not referenced in the outer query, we substitute a constant value, which is wasteful. With this optimization, we are trimming the RowGroup to a row of the form (1, c2_value1). This can have non-trivial query execution time improvements if the subquery contains large number of columns (such as a "select *" on a very wide table) and the outer query is only referencing a subset of these columns with lower index values from the subquery (as an example, c1 or c2 above). That is, the current limitation of this optimization is we are not removing those non-referenced subquery columns (c1 in the query above) which are to the left of a referenced column.
This commit is contained in:
@ -360,6 +360,14 @@ public:
|
||||
return fColumnMap;
|
||||
}
|
||||
|
||||
/** column map
|
||||
* all the columns appeared on query
|
||||
*/
|
||||
ColumnMap& columnMap()
|
||||
{
|
||||
return fColumnMap;
|
||||
}
|
||||
|
||||
/** assign the static fColMap to non-static fColumnMap. map-wise copy */
|
||||
void columnMap (const ColumnMap& columnMap);
|
||||
|
||||
|
Reference in New Issue
Block a user