7d0e3637ed
Prior to this change projection pushdown was implemented as a filter, which meant a query using it would take the following steps: * Query arrives * Find necessary partition data * Copy all the partition data into a RecordBatch * Filter that RecordBatch to apply the projection * Return results to caller This is far from ideal, as the underlying partition data is copied in its entirety and then the unneeded columns discarded - a pure waste! After this PR, the projection is pushed down to the point of RecordBatch generation: * Query arrives * Find necessary partition data * Copy only the projected columns to a RecordBatch * Return results to the caller This minimises the amount of data copying, which for large amounts of data should lead to a meaningful performance improvement when querying for a subset of columns. It also uses a slightly more efficient projection implementation by using a single pass over the columns (still O(n) but less constant overhead). |
||
---|---|---|
.. | ||
src | ||
Cargo.toml |