Query Conditions
In addition to the powerful range queries (i.e., slicing along the array dimensions), TileDB also supports query conditions on the rest of the attributes. Although attributes are not efficiently indexed like dimensions, TileDB still provides a lot of optimizations that can significantly boost the query performance in the presence of query conditions on attributes:
TileDB parallelizes across the tiles. This means that cell value comparisons against the condition are not a sequential scan, but the tiles are processed in parallel using multi-threading.
Where possible, TileDB utilizes tile metadata generated upon ingestion (min/max/sum/etc. are stored in each attribute data tile and in the fragment metadata) to skip fetching and decompressing entire tiles.
For dictionary-encoded strings, TileDB compares against the dictionary and uses the integer comparisons instead of the expensive string comparisons when applying the conditions to each cell attribute value.
Currently, TileDB supports the following operators in the query conditions:
>
,>=
,<
,<=
,==
AND
,OR
,NOT
Visit the Tutorials: Query Conditions section for an example on using query conditions in TileDB.