This page describes how to use adaptive filtering in AlloyDB Omni. This page describes how to use adaptive filtering in AlloyDB Omni.
Adaptive filtering analyzes query patterns and data distributions during query execution to dynamically choose the most efficient filtering strategy such as inline or pre-filtering.
The AlloyDB Omni query optimizer uses cost-based analysis to determine whether inline filtering or pre-filtering provides the best performance at any given point during query execution.
Such optimization is beneficial for AlloyDB Omni's filtered vector searches, where adaptive filtering automatically switches between vector and metadata index usage to ensure efficient and accurate results without your manual intervention.
Enable adaptive filtering
To enable adaptive filtering, use the scann.enable_preview_features
flag.
When adaptive filtering triggers a switch from inline filtering to pre-filtering during execution, the query plan dynamically changes.
For example, the plan can show Bitmap assisted pre-filtering
in the Execution Strategyfield when the optimizer determines that pre-filtering is more efficient at that point in the query. This dynamic change occurs as the system adapts to the actual data that it encounters during the query's execution.
Limit
(
actual
rows
=
10
loops
=
1
)
-
>
Custom
Scan
(
vector
scan
)
on
t1
(
actual
rows
=
10
loops
=
1
)
Execution
Strategy
:
Bitmap
assisted
pre
-
filtering
Order
By
:
(
vec_col
< =
>
'[...]'
::
vector
)
Limit
:
10
Num
Requalifications
:
0
Num
filtered
:
1000
-
>
Bitmap
Index
Scan
on
btree_idx
(
actual
rows
=
10000
loops
=
1
)
Index
Cond
:
(
int_col
< =
100000000
)