This section contains tips and best practices for improving performance with ClickHouse. We recommend users read Core Concepts as a precursor to this section, which covers the main concepts required to improve performance.
PREWHERE optimization
How PREWHERE reduces I/O by filtering data before reading unnecessary columns, and how to monitor its effectiveness.
Allocation profiling
Profile memory allocations with jemalloc.
Allocation profiling for versions before 25.9
Allocation profiling for ClickHouse versions before 25.9.
Caches
Cache types, including the query cache, query condition cache, and userspace page cache.
Data skipping indexes
Understanding data skipping indexes, with examples.
Lazy materialization
Defer reading column data until it is actually needed.
Troubleshooting
Debugging memory issues, testing your hardware, and the sampling query profiler.