Skip to main content
Indexed columns are columns or expressions included in the ParadeDB index. For filters over built-in scalar types and literal text columns, this is the most efficient path because the filter can be pushed directly into the ParadeDB scan. For filters backed by another database index, see External Indexes. Adding filters to a search query is as simple as using regular SQL WHERE clauses. For instance, the following query filters out results that do not meet rating > 2.
In order for the ParadeDB index to be used, at least one ParadeDB operator must be present in the query. Any of the following search operators qualify:For queries that do not require text search, add pdb.all to force the ParadeDB index without changing the query output.

Filter Pushdown

Non-Text Columns

While not required, filtering performance over non-text columns can be improved by including them in the ParadeDB index. When these columns are part of the index, WHERE clauses that reference them can be pushed down into the index scan itself. This can result in faster query execution over large datasets. For example, if rating and created_at are frequently used in filters, they can be added to the ParadeDB index during index creation:
Filter pushdown is currently supported for the following combinations of types and operators:

Text Columns

Suppose we have a text filter that looks for an exact string match like category = 'Footwear':
To push down the category = 'Footwear' filter, category must be indexed using the literal tokenizer:
Pushdown of set filters over text columns also requires the literal tokenizer: