Projection Index Step 3: Support using normal projections as secondary index#81021
Projection Index Step 3: Support using normal projections as secondary index#81021CurtizJ merged 7 commits intoClickHouse:masterfrom
Conversation
|
Workflow [PR], commit [2ca9333a] |
7b8e1e4 to
2022cce
Compare
74b90ad to
dd7dc2d
Compare
74913e7 to
2ca9333
Compare
|
Hi! Just curious, is this feature still planned for release soon? |
This feature involves a relatively complex review, so it may take some time. It's currently pending review at #81526 |
2ca9333 to
0c7e240
Compare
|
Workflow [PR], commit [c671b1c] Summary: ❌
|
404b994 to
cb31d33
Compare
cb31d33 to
2771328
Compare
Not sure what this means. |
|
Looking forward to this feature, not sure how much longer 😒? |
CurtizJ
left a comment
There was a problem hiding this comment.
Great PR! I've left some comments and questions.
It seems CI is broken when trying to add |
[ 171221 ] {513fe965-8da1-4156-bd68-0da8611caaff} : Logical error: 'Trying to insert into runtime filter after it was marked as finished'. Seems related to runtime filter. |
b7cefca
Changelog category (leave one):
Changelog entry (a user-readable short description of the changes that goes into CHANGELOG.md):
This PR allows using normal projections as a secondary index. When enabled, certain query predicates can be used to read from projection parts and generate bitmaps to filter rows efficiently during the PREWHERE stage. This is the third step to implement projection index, following #80343.
Documentation entry for user-facing changes
Details
This also provides some references for the future implementation of #75774.
Two new settings are introduced to control this optimization:
max_projection_rows_to_use_projection_index: If the estimated number of rows to read from the projection is <= this value, projection index can be applied.min_table_rows_to_use_projection_index: If the estimated number of rows to read from the table is >= this value, projection index will be considered.These thresholds help balance projection index usage with its overhead in less selective queries.
Currently only point-type projection indexes are supported. Inverted projections (e.g.,
Array(_part_offset)) will be in next step.