ae208a76fb
Практика: 'JOIN' - 'Массивы, Map и вложенные структуры*' - 'Партиции' - 'Индексы'.
69 lines
2.1 KiB
SQL
69 lines
2.1 KiB
SQL
-- Задание 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 Индекс не будет использоваться. |