ARRAY, 10 rows, index_granularity = 8192, GRANULARITY = 1 million --> 1 granule, 1 indexed block - Annoy: WHERE-type 5 [0,2] 0 6 [0,2.1] 0.09999990463256836 7 [0,2.2] 0.20000004768371582 - Annoy: ORDER-BY-type 5 [0,2] 0 6 [0,2.1] 0.09999990463256836 7 [0,2.2] 0.20000004768371582 - Usearch: WHERE-type 5 [0,2] 0 6 [0,2.1] 0.09999990463256836 7 [0,2.2] 0.20000004768371582 - Usearch: ORDER-BY-type 5 [0,2] 0 6 [0,2.1] 0.09999990463256836 7 [0,2.2] 0.20000004768371582 - Annoy: WHERE-type, EXPLAIN Expression ((Projection + Before ORDER BY)) Limit (preliminary LIMIT (without OFFSET)) Expression ReadFromMergeTree (default.tab_annoy) Indexes: PrimaryKey Condition: true Parts: 1/1 Granules: 1/1 Skip Name: idx Description: annoy GRANULARITY 100000000 Parts: 1/1 Granules: 1/1 - Annoy: ORDER-BY-type, EXPLAIN Expression (Projection) Limit (preliminary LIMIT (without OFFSET)) Sorting (Sorting for ORDER BY) Expression (Before ORDER BY) ReadFromMergeTree (default.tab_annoy) Indexes: PrimaryKey Condition: true Parts: 1/1 Granules: 1/1 Skip Name: idx Description: annoy GRANULARITY 100000000 Parts: 1/1 Granules: 1/1 - Usearch: WHERE-type, EXPLAIN Expression ((Projection + Before ORDER BY)) Limit (preliminary LIMIT (without OFFSET)) Expression ReadFromMergeTree (default.tab_usearch) Indexes: PrimaryKey Condition: true Parts: 1/1 Granules: 1/1 Skip Name: idx Description: usearch GRANULARITY 100000000 Parts: 1/1 Granules: 1/1 - Usearch: ORDER-BY-type, EXPLAIN Expression (Projection) Limit (preliminary LIMIT (without OFFSET)) Sorting (Sorting for ORDER BY) Expression (Before ORDER BY) ReadFromMergeTree (default.tab_usearch) Indexes: PrimaryKey Condition: true Parts: 1/1 Granules: 1/1 Skip Name: idx Description: usearch GRANULARITY 100000000 Parts: 1/1 Granules: 1/1 ARRAY vectors, 12 rows, index_granularity = 3, GRANULARITY = 2 --> 4 granules, 2 indexed block - Annoy: WHERE-type 6 [0,2] 0 7 [0,2.1] 0.09999990463256836 8 [0,2.2] 0.20000004768371582 - Annoy: ORDER-BY-type 6 [0,2] 0 7 [0,2.1] 0.09999990463256836 8 [0,2.2] 0.20000004768371582 - Usearch: WHERE-type 6 [0,2] 0 7 [0,2.1] 0.09999990463256836 8 [0,2.2] 0.20000004768371582 - Usearch: ORDER-BY-type 6 [0,2] 0 7 [0,2.1] 0.09999990463256836 8 [0,2.2] 0.20000004768371582 - Annoy: WHERE-type, EXPLAIN Expression ((Projection + Before ORDER BY)) Limit (preliminary LIMIT (without OFFSET)) Expression ReadFromMergeTree (default.tab_annoy) Indexes: PrimaryKey Condition: true Parts: 1/1 Granules: 4/4 Skip Name: idx Description: annoy GRANULARITY 2 Parts: 1/1 Granules: 1/4 - Annoy: ORDER-BY-type, EXPLAIN Expression (Projection) Limit (preliminary LIMIT (without OFFSET)) Sorting (Sorting for ORDER BY) Expression (Before ORDER BY) ReadFromMergeTree (default.tab_annoy) Indexes: PrimaryKey Condition: true Parts: 1/1 Granules: 4/4 Skip Name: idx Description: annoy GRANULARITY 2 Parts: 1/1 Granules: 2/4 - Usearch: WHERE-type, EXPLAIN Expression ((Projection + Before ORDER BY)) Limit (preliminary LIMIT (without OFFSET)) Expression ReadFromMergeTree (default.tab_usearch) Indexes: PrimaryKey Condition: true Parts: 1/1 Granules: 4/4 Skip Name: idx Description: usearch GRANULARITY 2 Parts: 1/1 Granules: 1/4 - Usearch: ORDER-BY-type, EXPLAIN Expression (Projection) Limit (preliminary LIMIT (without OFFSET)) Sorting (Sorting for ORDER BY) Expression (Before ORDER BY) ReadFromMergeTree (default.tab_usearch) Indexes: PrimaryKey Condition: true Parts: 1/1 Granules: 4/4 Skip Name: idx Description: usearch GRANULARITY 2 Parts: 1/1 Granules: 2/4 TUPLE vectors and special cases - Annoy: WHERE-type 0 (4.6,2.3) 0.5527864045000421 1 (2,3.2) 0.15200169244542905 2 (4.2,3.4) 0.37080174340866845 - Annoy: ORDER-BY-type 6 (1,9.3) 0.005731362878640178 1 (2,3.2) 0.15200169244542905 7 (5.5,4.7) 0.3503476876550442 - Usearch: WHERE-type 0 (4.6,2.3) 0.5527864045000421 1 (2,3.2) 0.15200169244542905 2 (4.2,3.4) 0.37080174340866845 - Usearch: ORDER-BY-type 6 (1,9.3) 0.005731362878640178 1 (2,3.2) 0.15200169244542905 7 (5.5,4.7) 0.3503476876550442 - Special case: MaximumDistance is negative - Special case: MaximumDistance is negative - Special case: setting "annoy_index_search_k_nodes" - Special case: setting "max_limit_for_ann_queries" Expression (Projection) Limit (preliminary LIMIT (without OFFSET)) Sorting (Sorting for ORDER BY) Expression (Before ORDER BY) ReadFromMergeTree (default.tab_annoy) Indexes: PrimaryKey Condition: true Parts: 1/1 Granules: 4/4 - Special case: setting "max_limit_for_ann_queries" Expression (Projection) Limit (preliminary LIMIT (without OFFSET)) Sorting (Sorting for ORDER BY) Expression (Before ORDER BY) ReadFromMergeTree (default.tab_usearch) Indexes: PrimaryKey Condition: true Parts: 1/1 Granules: 4/4