Menu

ClickHouse 26.10's string filter during scan cuts a selective LIKE query's memory 25-fold
πŸ“°

ClickHouse 26.10's string filter during scan cuts a selective LIKE query's memory 25-fold

DEV Community: databaseΒ·Alex GeorgievΒ·about 3 hours ago
#ds0bCH6V
#devtodatabase#devto#dev#setting#query
Reading 0:00
15s threshold

A LIKE query against ten million rows used 37.6MB of peak memory on ClickHouse 26.9. The same table, the same query, same hardware, on 26.10 released six days ago: 1.48MB. Nothing else about the query changed.

ClickHouse 26.10 shipped on 6 November 2026 with a new setting, apply_string_filters_during_scan , on by default. It pushes substring search conditions down into the column scan itself, so rows that don't match never get fully materialised. I wanted to know what that's actually worth, where it stops working, and what a reader would hit if they relied on it without reading the fine print.

What the setting does

The description in system.settings is unusually precise for a ClickHouse setting:

When a PREWHERE condition contains a conjunct that searches for a non-empty substring in a String column (LIKE, position, startsWith, endsWith, or equality with a non-empty string), the reader checks every value against this condition during deserialization and reads non-matching values as empty strings.

Enter…

Continue reading β€” create a free account

Join HashtagPLUS to read full articles, follow hashtags, vote, and join the conversation.