Части - части таблицы, в которой хранятся строки. Одна часть = одна папка с колонками.
Разделы - это виртуальные сущности. У них нет физического представления. Но можно сказать, что эти части принадлежат одному разделу.
Select не заботится о разделах.
Select не знает о ключах разделения.
ПОТОМУ ЧТО каждая часть имеет специальные файлы minmax_ {PARTITIONING_KEY_COLUMN} .idx Эти файлы содержат минимальные и максимальные значения этих столбцов в этой части. Также значения minmax_ хранятся в памяти в виде списка частей (вектор С ++).
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()))
person
Denny Crane
schedule
10.02.2020