ClickHouse Feature Journey
The evolution of ClickHouse to an analytics platform for all workloads
Five capability areas, each with a distinct story. Scroll to explore.
From tune it yourself to it just works
Joins
JOIN performance in ClickHouse has evolved dramatically over successive releases. Improvements across query planning, algorithms, parallel execution, memory management, and spilling transformed JOINs from workloads that timed out or ran out of memory into queries that now complete competitively across industry benchmarks like TPC-H.
Modern ClickHouse JOINs are built for real-world analytical workloads at scale.
Cumulative best per query · failed queries counted as 60s
Curious how each TPC-H query improved over time? Explore the impact of specific ClickHouse releases and see how performance evolved as join capabilities were introduced and refined.
Read the full engineering story: How ClickHouse became fast at joins ->->
v26.6Jun 2026
Jun 2026 • v26.6
Faster ASOF JOIN
ASOF JOIN can now use the parallel_hash join algorithm, parallelising the build phase across all available CPU cores — previously it was unconditionally opted out of parallel hash.
May 2026 • v26.5
CPU prefetching in hash join probe phase
Software prefetch hints in the hash join probe phase pull upcoming hash table entries into CPU caches ahead of lookups, reducing memory access latency for large hash tables.
May 2026 • v26.5
JOIN spilling to disk by default
The new max_bytes_ratio_before_external_join setting expresses the spill-to-disk threshold as a fraction of available memory. Enabled by default at 0.5, hash joins automatically spill to grace hash join once the right side exceeds half of available memory, preventing OOM errors.
Apr 2026 • v26.4
NATURAL JOIN
ClickHouse now includes support for NATURAL JOIN, simplifying queries by automatically matching columns with the same name and removing duplicate fields from the output.
Apr 2026 • v26.4
JOIN spilling to disk
Large hash joins now gracefully spill to disk when memory thresholds are exceeded, allowing queries to continue executing instead of failing under memory pressure.
Apr 2026 • v26.4
Statistics by default
ClickHouse now generates basic column statistics automatically for new tables, giving the optimizer better cardinality estimates and pruning decisions without impacting insert performance.
Dec 2025 • v25.12
Faster lazy reading with join-style execution model
Deferred data reads during join processing reduce unnecessary I/O and memory consumption for complex joins.
Faster Lazy Reading with Join-Style Execution Model: Learn more ->->
Dec 2025 • v25.12
Faster joins with a more powerful join reordering algorithm
A global join reordering algorithm evaluates entire join graphs to choose more efficient multi-table execution plans.
Faster Joins with a More Powerful Join Reordering Algorithm: Learn more ->->
Oct 2025 • v25.10
Bloom filters in joins
Runtime Bloom filter pre-filters on join keys eliminate non-matching rows before the actual join phase.
Oct 2025 • v25.10
Lazy columns replication in joins
Lazy columns replication avoids processing repeated join key values, reducing CPU and memory usage significantly.
Oct 2025 • v25.10
Push-down of complex conditions in joins
Complex OR conditions inside join predicates are now pushed down earlier, reducing rows participating in joins.
Sep 2025 • v25.9
Automatic global join reordering
The optimiser now determines the best join order for queries with multiple joined tables, improving multi-table performance.
Jul 2025 • v25.7
Optimisations for hash joins
Low-level optimisations to the parallel hash join improve CPU utilisation and throughput across multiple cores.
Feb 2025 • v25.2
Faster parallel hash join — build phase
Improvements to the build phase reduce thread contention and improve scalability for large join workloads.
Jan 2025 • v25.1
Faster parallel hash join — probe phase
Enhancements to the probe phase and internal hash map structures improve performance consistency and overall join efficiency.
Dec 2024 • v24.12
Automatic join reordering
The optimiser now selects better join execution plans automatically, without requiring manual query restructuring.
Dec 2024 • v24.12
Optimisation of JOIN expressions
JOIN expressions are automatically optimised and common expressions extracted and simplified algebraically.
Dec 2024 • v24.12
Non-equi joins supported by default
Non-equal join conditions (experimental since 24.05) are now enabled by default in all deployments.
Nov 2024 • v24.11
Parallel hash join becomes default
The parallel hash join algorithm is now the default join strategy, enabling better multi-core utilisation out of the box.
Aug 2024 • v24.8
JOIN improvements
Expanded non-equal JOIN strictness variants and a new OPTIMIZE TABLE for Join-engine tables reduce memory footprint by up to 30%.
Jul 2024 • v24.7
Merge join algorithm for ASOF JOIN
ASOF JOIN now works with the non-memory-bound full sorting merge join algorithm for large-scale time-series joins.
Jul 2024 • v24.7
Faster parallel hash join
Optimised hash table allocation and reuse strategies reduce overhead and improve execution speed for repeated join queries.
May 2024 • v24.5
Cross JOIN improvements
Performance and efficiency improvements to cross joins reduce resource usage and make Cartesian joins more practical.
May 2024 • v24.5
Non-equal JOIN support
Support for non-equal join conditions (<, >, <=, >=) enables more expressive analytical queries beyond equi-joins.
Apr 2024 • v24.4
Recursive CTE support
Recursive common table expressions enable hierarchical and graph-like traversals directly in SQL.
Apr 2024 • v24.4
Join performance improvements
General join performance enhancements reduce inefficiencies and improve predicate handling across all join types.
Dec 2023 • v23.12
PASTE JOIN
PASTE JOIN joins datasets by row number rather than key, useful when equivalent rows across datasets refer to the same item.
Dec 2022 • v22.12
Grace hash JOIN & reduced memory for hash join
The Grace Hash join overcomes memory limits of partial merge join, and hash join memory overhead is also reduced.
Grace Hash JOIN & Reduced Memory for Hash Join: Learn more ->->
Mar 2022 • v22.3
Join improvements begin
Baseline TPC-H benchmark established. Many queries still TIMEOUT or fail with unsupported correlated-subquery syntax — the starting point for the multi-year journey of join improvements that follows.
Your lakehouse, your data
Data Lakes
ClickHouse embraces open lakehouse architectures with native support for Iceberg, Delta Lake, and object storage across every major cloud provider.
Cloud and catalog agnostic by design, ClickHouse can read, write, query, accelerate, and maintain lakehouse data directly where it lives.
Read more: ClickHouse is data lake ready ->->
v26.4Apr 2026
Apr 2026 • v26.4
Delta lake virtual column pruning
Predicates over virtual columns like _partition now prune Delta Lake data files before they're opened, cutting object-storage requests for partitioned tables.
Apr 2026 • v26.4
Iceberg orphan file removal
ALTER TABLE … EXECUTE remove_orphan_files (experimental) walks the snapshot graph and reclaims unreferenced files from object storage. Pairs with expire_snapshots to maintain Iceberg tables in place.
Apr 2026 • v26.4
Iceberg writes — unity catalog and path handling
Better Unity Catalog write support, cleaner storage-vs-metadata path separation, Spark-compatible version-hint.txt parsing, and position deletes no longer relying on path-inference heuristics.
Iceberg Writes — Unity Catalog and Path Handling: Learn more ->->
Sep 2025 • v25.9
Data lake improvements
ALTER UPDATE and DROP TABLE for Iceberg tables, ORC/Avro format support, Unity catalog on Azure, and distributed INSERT SELECT for data lakes.
Sep 2025 • v25.9
Storage class specification for S3
Users can now specify the AWS S3 storage class (e.g. INTELLIGENT_TIERING) when creating S3-backed tables.
Aug 2025 • v25.8
Improved azure blob storage performance
Managed identity authentication tokens are now cached and reused, reducing throttling and improving throughput for Azure data lake access.
Aug 2025 • v25.8
Data lake DML on iceberg
Full INSERT, DELETE, UPDATE, and ALTER SCHEMA on Iceberg tables via IcebergS3, enabling interactive DML without importing to native storage.
Aug 2025 • v25.8
New native parquet reader (v3)
A new faster native Parquet reader parallelises column reads, making Parquet handling significantly faster for large lakehouse datasets.
Jul 2025 • v25.7
Native support for geo parquet types
Parquet columns encoded in WKB now map directly to ClickHouse geo types like Point, LineString, and Polygon.
Jun 2025 • v25.6
JSON in parquet
ClickHouse can now read the logical JSON type from Parquet files directly into its native JSON type without extra transformation.
Jun 2025 • v25.6
New system tables: codecs and iceberg_history
New system tables including iceberg_history provide visibility into Iceberg snapshot histories and codec usage.
New System Tables: Codecs and iceberg_history: Learn more ->->
May 2025 • v25.5
Geo types in parquet
Improved geospatial interoperability enables better handling of spatial columns stored in Parquet format.
May 2025 • v25.5
Hive metastore catalog for iceberg
The DataLakeCatalog engine supports Hive metastore, allowing direct discovery of Iceberg tables registered in an existing metastore.
Apr 2025 • v25.4
Apache iceberg time travel
Time travel queries allow users to query historical snapshots of Iceberg datasets, enabling temporal analytics on lakehouse data.
Mar 2025 • v25.3
AWS glue and unity catalogs integration
ClickHouse can now discover and query Iceberg and Delta Lake tables registered in AWS Glue Catalog and Unity Catalog.
Feb 2025 • v25.2
Writing bloom filters for parquet
ClickHouse can now write Bloom filters into Parquet files, enabling efficient predicate pushdown during Parquet reads.
Feb 2025 • v25.2
Integration with delta rust kernel
The Delta Rust kernel integration expands ClickHouse's ability to read Delta Lake datasets with robust format support.
Dec 2024 • v24.12
Iceberg REST catalog and schema evolution support
ClickHouse supports Iceberg REST catalog discovery and schema evolution metadata, enabling Unity and Polaris catalog integration.
Iceberg REST Catalog and Schema Evolution Support: Learn more ->->
May 2024 • v24.5
Reading from archives on S3
ClickHouse can read files inside ZIP and TAR archives stored on S3 without pre-extracting them.
Nov 2023 • v23.11
S3Queue is production ready
The S3Queue table engine reaches production status, enabling streaming ingestion of files from S3 directly into ClickHouse.
Aug 2023 • v23.8
Files, files, and more files
Advanced file metadata handling and row group skipping using Parquet file metadata accelerate scans on data lakes.
Jul 2023 • v23.7
Parquet writing improvements
More efficient Parquet file writing improves export performance and enhances interoperability with lakehouse tools.
May 2023 • v23.5
Azure blob storage table function
The azureBlobStorage table function enables querying Parquet and other formats stored in Azure Blob Storage directly.
May 2023 • v23.5
Parquet reading even faster
Better parallel reads and format optimisations speed up data lake workloads involving Parquet files.
Mar 2023 • v23.3
Parallel replicas
Queries can now read from multiple replicas in parallel, improving throughput by better utilising all available replicas.
Mar 2023 • v23.3
Parallel replicas with dynamic shards
Parallel replicas now support dynamic shard membership, distributing work across evolving cluster topologies without manual reconfiguration.
Feb 2023 • v23.2
Support for apache iceberg
Early support for the Apache Iceberg table format enables reading Iceberg tables via table functions with schema and metadata handling.
The secret behind continuously faster queries
Indexes
Indexes are one of the foundational building blocks behind ClickHouse performance. From sparse primary indexes and data skipping indexes to projections and full-text search, every release keeps improving how efficiently ClickHouse scans, skips, and accelerates data.
Together, these innovations allow ClickHouse to scale from gigabytes to petabytes while maintaining sub-second analytical performance.
v26.6Jun 2026
Jun 2026 • v26.6
Hypothetical skip indexes
CREATE HYPOTHETICAL INDEX and EXPLAIN WHATIF answer "what if I had this skip index?" — reporting estimated marks read and skip ratio without building the index.
Jun 2026 • v26.6
Faster primary key evaluation — lightweight mode
Lightweight primary key index analysis (on by default) processes only the key columns a query filters on, so long or high-cardinality primary keys no longer slow down index analysis.
Faster Primary Key Evaluation — Lightweight Mode: Learn more ->->
Jun 2026 • v26.6
Lazy materialisation of projections
New table settings decouple projection building from INSERT: inserts can skip building projection parts, with background merges rebuilding missing projections instead.
Jun 2026 • v26.6
Full-text search: stemming
Text indexes now accept a postprocessor expression applied to each token — such as stem(str, 'en') — so morphological variants like 'running' and 'runs' match the same indexed stem.
Apr 2026 • v26.4
Skip indices on JSON paths
MergeTree skip indices now work on the dynamic set of paths inside a JSON column via JSONAllPaths, skipping granules where the filtered paths are absent.
Apr 2026 • v26.4
Text index on JSON leaf values
JSONAllValues exposes every leaf value of a JSON column as Array(String), so a text index on it automatically accelerates filters on any JSON subcolumn.
Apr 2026 • v26.4
LIKE patterns use text index
The planner now extracts literal substrings from LIKE expressions and uses the text index to skip granules. Text index is also now GA.
Apr 2026 • v26.4
Full-text search: phrase search
hasPhrase matches a continuous sequence of tokens in order, with the text index used as a granule pre-filter — initial support (not fast yet).
Apr 2026 • v26.4
Primary key pruning for regex alternations
Primary key pruning now detects shared literal prefixes inside regex alternations like ^(abc-1|abc-2|abc-3), enabling pruning where the whole table previously had to be scanned.
Apr 2026 • v26.4
Index sharding improvements
Distributed primary-index analysis now runs after partition pruning, and a quadratic blow-up on IN-subquery predicates is fixed. Index sharding produced 5–8× speedups on bloom/text/vector lookups at 10 replicas.
Jan 2026 • v26.1
Text index improvements
Enhancements to text indexing support make inverted indexes over tokenized strings more robust and efficient for full-text search.
Dec 2025 • v25.12
Text index moves to beta
The full-text skip index feature reaches beta, tokenising text columns so predicates can skip entire non-matching granules.
Dec 2025 • v25.12
Faster top-n queries with data skipping indexes
Top-N queries now compare the current threshold against granule-level min/max index metadata to skip irrelevant granules before any data is read.
Faster Top-N Queries with Data Skipping Indexes: Learn more ->->
Nov 2025 • v25.11
Speeding up DISTINCT with projections
Projections aligned with DISTINCT keys reduce data scanned during DISTINCT aggregation, lowering compute and I/O.
Nov 2025 • v25.11
Projections as secondary indices
Projections now store only the sort key plus a part offset pointer, acting as lightweight secondary index structures.
Oct 2025 • v25.10
Late materialisation of secondary indices
Non-indexed columns are retrieved only after secondary index pruning is applied, reducing unnecessary reads on wide tables.
Sep 2025 • v25.9
New text index
A new experimental text index restructures full-text search around skip index granules, delivering order-of-magnitude performance improvements.
Sep 2025 • v25.9
Streaming secondary indices
Columnar data reads and index checks are now interleaved, so the engine can skip granules before data is read and stop early.
Jun 2025 • v25.6
Bloom filter index optimisation
Improvements to Bloom filter index implementation enhance efficiency across all types, reducing false positives and I/O.
Jun 2025 • v25.6
Filtering by multiple projections
ClickHouse can now examine multiple projections' primary indexes to prune irrelevant parts when a query includes filters aligned with different sort orders.
Apr 2025 • v25.4
Lazy materialisation optimisation
Non-necessary columns are read only after the final result set is known, dramatically cutting I/O for Top-N queries.
Jan 2025 • v25.1
Minmax indices at the table level
Table-level MinMax indices record min/max values per granule, allowing the engine to skip entire granules for range predicate queries.
Dec 2024 • v24.12
JSON subcolumns as table primary key
JSON subcolumns can now be included in ORDER BY primary keys, enabling range scans and index pruning on JSON path values.
Dec 2024 • v24.12
Reverse table ordering
Tables can now be sorted in descending direction in ORDER BY, accelerating range scans and ordered queries that want descending results.
Jul 2024 • v24.7
Optimise read-in-order
Buffered reads before the final merge step allow parallel reads for ORDER BY queries that align with the table's physical sort order.
Jun 2024 • v24.6
Optimal table sorting
The optimize_row_order setting sorts rows within equal primary key ranges by column cardinality, improving compression by 20–40%.
Feb 2024 • v24.2
Reduced memory usage for primary key
Memory consumption for the in-memory primary key index is reduced in ClickHouse 24.2.
Feb 2023 • v23.2
Multi-stage PREWHERE
Filters are applied in multiple ordered stages from smallest to largest column size, significantly lowering I/O on wide tables.
Jan 2023 • v23.1
Inverted full-text indices
Experimental inverted full-text indices accelerate text search by mapping terms to document positions.
Built to keep data moving
Data Lifecycle
Materialized views, TTLs, tiered storage, mutations, and automated movement policies help ClickHouse continuously optimize how data is stored, transformed, retained, and queried over time.
The result is a platform designed to keep analytical workloads fast, efficient, and manageable as data volumes grow.
v26.1Jan 2026
Jan 2026 • v26.1
Deduplication of asynchronous inserts with materialized views
Duplicate inserts are now filtered consistently across materialized views in asynchronous insert workflows.
Deduplication of Asynchronous Inserts with Materialized Views: Learn more ->->
Oct 2025 • v25.10
Late materialisation of secondary indices
Settings that delay the materialisation of secondary indices prioritise insert performance over index construction.
Jul 2025 • v25.7
Lightweight updates and deletes
SQL UPDATE uses patch parts and DELETE behaviour marks row removal as small patch parts applied during background merges.
Jun 2025 • v25.6
Consistent snapshot handling
Single consistent snapshots across queries ensure SELECTs see the same data view even when inserts or mutations occur concurrently.
Feb 2025 • v25.2
Backup database engine
A new Backup database engine allows instantly attaching tables and databases from backups in read-only mode.
Jan 2025 • v25.1
Better merge tables
From 25.1, Merge table columns are standardised to a common or Variant type rather than adopting the first table's structure.
Feb 2024 • v24.2
Adaptive asynchronous inserts
Buffer flush timeouts now adapt dynamically to insert frequency, reducing latency for infrequent inserts while maintaining throughput.
Feb 2024 • v24.2
Lightweight updates available in open source
Lightweight UPDATE support, previously cloud-only, becomes available in the open-source ClickHouse distribution.
Lightweight Updates Available in Open Source: Learn more ->->
Mar 2023 • v23.3
Lightweight deletes now GA
Lightweight Deletes reach general availability, enabling efficient row removal via DELETE syntax with background merge semantics.
Nov 2022 • v22.11
Retries on INSERT
Large data migrations and long-running insert jobs can now survive intermittent failures without failing the entire request.
Bring your data. We've got the formats covered.
Data Types & Formats
From sparse encoding and Dynamic columns to Variant, JSON, and native semi-structured support, ClickHouse keeps expanding the ways data can be modeled, ingested, queried, and exchanged.
Structured or unstructured, ClickHouse is designed for frictionless interoperability across modern data formats and ecosystems.
v26.4Apr 2026
Apr 2026 • v26.4
Arrow flight SQL protocol
ClickHouse can now serve queries over the Apache Arrow Flight SQL gRPC protocol via a separate listener, enabling high-throughput columnar access for clients in the Arrow ecosystem.
Apr 2026 • v26.4
VALUES as table expression
VALUES (1, 'a'), (2, 'b') AS t(id, name) can now be used as a table expression — joinable, filterable, and PostgreSQL-compatible — no external source needed for ad-hoc data.
Jan 2026 • v26.1
Lowcardinality DISTINCT improvements
DISTINCT over LowCardinality columns now operates directly on dictionary encodings, significantly accelerating those queries.
Jan 2026 • v26.1
Qbit promoted to beta
QBit — the quantized bit-packed vector type introduced in 25.10 — is promoted to beta status in 26.1.
Jan 2026 • v26.1
Variant support in all functions
Functions that previously did not accept Variant now dispatch appropriately on underlying types, vastly improving Variant usability.
Oct 2025 • v25.10
Arrow flight & client service support
ClickHouse can now act as an Arrow Flight SQL server, improving high-performance columnar data transport with compatible tooling.
Oct 2025 • v25.10
Qbit data type for vector embeddings
QBit is a quantized bit-packed vector type that lets users store high-dimensional vectors and choose precision at query time.
Aug 2025 • v25.8
Arrow flight and external format enhancements
Strengthened Arrow Flight support improves ClickHouse's ability to ingest and output typed data with Arrow IPC ecosystems.
Arrow Flight and External Format Enhancements: Learn more ->->
Jul 2025 • v25.7
Native geospatial types and functions
Native geospatial data types and richer geospatial functions elevate spatial analytics within ClickHouse's type system.
Jun 2025 • v25.6
JSON in parquet and Time/Time64 data types
JSON in Parquet ingestion and new Time/Time64 types offer finer temporal precision and richer semi-structured data workflows.
May 2025 • v25.5
Geospatial types in parquet search
Improved Parquet geospatial support enables geospatial type handling and search within Parquet data.
Mar 2025 • v25.3
JSON data type reaches general availability
The native JSON data type reaches GA, offering robust production-ready support for semi-structured JSON with efficient storage and querying.
JSON Data Type Reaches General Availability: Learn more ->->
Dec 2024 • v24.12
Enum usability improvements
Improved Enum type usability smooths the developer experience with enumerated types in queries and schema definitions.
Dec 2024 • v24.12
JSON subcolumns as primary key
JSON subcolumns can now be used as primary key columns, enabling indexed access patterns on JSON content.
Nov 2024 • v24.11
BFloat16 data type for vector workloads
The BFloat16 type optimises storage and computation for vector and ML workloads with efficient 16-bit representation.
Sep 2024 • v24.9
Variant types in schema inference and JSON enhancements
Automatic schema inference can now return Variant types, improving how schemas are derived from JSON and semi-structured sources.
Variant Types in Schema Inference and JSON Enhancements: Learn more ->->
Aug 2024 • v24.8
Experimental native JSON data type
The native JSON data type lands experimentally in the 24.08 LTS, enabling semi-structured storage and querying within tables.
May 2024 • v24.5
Dynamic data type and reading archives on S3
The experimental Dynamic type supports flexible semi-structured columns without predefined type lists.
Dynamic Data Type and Reading Archives on S3: Learn more ->->
Feb 2024 • v24.2
Automatic detection of file format
When processing files, ClickHouse automatically detects the file type even without a valid extension.
Feb 2024 • v24.2
Optimisation for Int8 data type
Query performance for the Int8 data type is improved in ClickHouse 24.2.
Jan 2024 • v24.1
Variant type
The Variant type is a discriminated union of nested column types, forming the foundation of semi-structured column support.
Oct 2023 • v23.10
Support for numpy arrays in imports
Direct ingestion of NumPy arrays enables integration of typed arrays from scientific computing workflows.
Sep 2023 • v23.9
Improved JSON support, GCD codec, and type inference for JSON
Enhanced JSON data type support, a new GCD codec for better numeric compression, and improved JSON type inference.
Improved JSON Support, GCD Codec, and Type Inference for JSON: Learn more ->->
Aug 2023 • v23.8
Archive reading (zip, tar, 7zip)
ClickHouse now supports reading ZIP, TAR, and 7zip archives, which can each contain multiple files.
Jul 2023 • v23.7
Sparse columns enabled by default
Columns with many default values now automatically use sparse serialisation, improving storage efficiency and query performance.
Dec 2022 • v22.12
BSON format support
BSON support enables efficient parsing and working with binary data from document-oriented systems like MongoDB.
Jan 2022 • v22.1
Sparse encoding for columns
Columns containing mostly default values can automatically use sparse format, reducing storage and computation costs.
Try every capability you just explored
All the joins improvements, lakehouse integrations, index types, lifecycle features, and data format support — fully managed, starting free. No setup required.