Детали - части таблицы, в которой хранятся строки. Одна часть = одна папка со столбцами.
Разделы - это виртуальные объекты. У них нет физического представления. Но вы можете сказать, что эти части принадлежат одному разделу.
Выбор не заботит разделы.
Select не знает о ключах разделения.
ПОТОМУ ЧТО каждая часть имеет специальные файлы minmax_ {PARTITIONING_KEY_COLUMN} .idx Эти файлы содержат минимальные и максимальные значения этих столбцов в этой части. Также эти значения minmax_ хранятся в памяти в виде (c ++ vector) списка деталей.
create table X (A Int64, B Date, K Int64,C String)
Engine=MergeTree partition by (A, toYYYYMM(B)) order by K;
insert into X values (1, today(), 1, '1');
cd /var/lib/clickhouse/data/default/X/1-202002_1_1_0/
ls -1 *.idx
minmax_A.idx <-----
minmax_B.idx <-----
primary.idx
SET send_logs_level = 'debug';
select * from X where A = 555;
(SelectExecutor): MinMax index condition: (column 0 in [555, 555])
(SelectExecutor): Selected 0 parts by date
SelectExecutor проверил список деталей в памяти и нашел 0 деталей, потому что minmax_A.idx = (1,1) и это выберите необходимый (555, 555).
CH не хранит значения ключей разделения.
Например, toYYYYMM (today ()) = 202002, но этот 202002 не сохраняется ни в части, ни где-либо еще.
магазины minmax_B.idx (18302, 18302) (2020-02-10 == select toInt16(today()))