-- Задание 1 CREATE TABLE mnoskov.logs ON CLUSTER clickhouse_cluster ( log_id UInt64, ts DateTime ) ENGINE=ReplicatedMergeTree( '/clickhouse/tables/{shard}/mnoskov/logs_ttl', '{replica}' ) ORDER BY ts; ALTER TABLE mnoskov.logs ADD INDEX idx_ts ts TYPE minmax granularity 2; SELECT * FROM logs WHERE ts BETWEEN '2024-06-02' AND '2024-06-03'; -- 2 У меня нет доступа к системным таблицам, я не могу посмотреть. -- Если в order by будет log_id а не ts, то индекс не будет работать. -- Задание 2 CREATE TABLE mnoskov.clicks ON CLUSTER clickhouse_cluster ( id UInt64, country String ) ENGINE=ReplicatedMergeTree( '/clickhouse/tables/{shard}/mnoskov/clicks', '{replica}' ) ORDER BY id; ALTER TABLE mnoskov.clicks ADD INDEX idx_country country TYPE set(1000) GRANULARITY 2; ALTER TABLE mnoskov.clicks DROP INDEX idx_country; explain SELECT * FROM clicks WHERE country = 'RU'; -- 3 не использутся индеск, я туда 11тыс строк заинсертил, все равно не используется. -- 4 я думаю индекс не будет работать эффективно, а может быть и вообще будет запрос замедлять. -- Задание 3 CREATE TABLE mnoskov.users ON CLUSTER clickhouse_cluster ( id UInt64, email String ) ENGINE=ReplicatedMergeTree( '/clickhouse/tables/{shard}/mnoskov/users_simple', '{replica}' ) ORDER BY id; ALTER TABLE mnoskov.users ADD INDEX idx_email email TYPE bloom_filter(0.01) GRANULARITY 2; explain SELECT * FROM users WHERE email = 'alice@mail.com'; -- 2 Ну я не вижу в EXPLAIN какое либо упоминание индекса, но я ссылаюсь на то, что просто мало данных в таблице. -- 3 Потому что этот индекс работает только на точные совпадения - exact match. explain SELECT * FROM users WHERE email LIKE 'alice%'; -- 4 Индекс не будет использоваться.