2024-05-24 17:07:18 +00:00
|
|
|
DROP TABLE IF EXISTS t_skip_index_insert;
|
|
|
|
|
|
|
|
CREATE TABLE t_skip_index_insert
|
|
|
|
(
|
|
|
|
a UInt64,
|
|
|
|
b UInt64,
|
|
|
|
INDEX idx_a a TYPE minmax,
|
|
|
|
INDEX idx_b b TYPE set(3)
|
|
|
|
)
|
|
|
|
ENGINE = MergeTree ORDER BY tuple() SETTINGS index_granularity = 4;
|
|
|
|
|
2024-07-12 12:49:26 +00:00
|
|
|
SET enable_analyzer = 1;
|
2024-05-24 17:07:18 +00:00
|
|
|
SET materialize_skip_indexes_on_insert = 0;
|
|
|
|
|
|
|
|
SYSTEM STOP MERGES t_skip_index_insert;
|
|
|
|
|
|
|
|
INSERT INTO t_skip_index_insert SELECT number, number / 50 FROM numbers(100);
|
|
|
|
INSERT INTO t_skip_index_insert SELECT number, number / 50 FROM numbers(100, 100);
|
|
|
|
|
|
|
|
SELECT count() FROM t_skip_index_insert WHERE a >= 110 AND a < 130 AND b = 2;
|
|
|
|
EXPLAIN indexes = 1 SELECT count() FROM t_skip_index_insert WHERE a >= 110 AND a < 130 AND b = 2;
|
|
|
|
|
|
|
|
SYSTEM START MERGES t_skip_index_insert;
|
|
|
|
OPTIMIZE TABLE t_skip_index_insert FINAL;
|
|
|
|
|
|
|
|
SELECT count() FROM t_skip_index_insert WHERE a >= 110 AND a < 130 AND b = 2;
|
|
|
|
EXPLAIN indexes = 1 SELECT count() FROM t_skip_index_insert WHERE a >= 110 AND a < 130 AND b = 2;
|
|
|
|
|
|
|
|
TRUNCATE TABLE t_skip_index_insert;
|
|
|
|
|
|
|
|
INSERT INTO t_skip_index_insert SELECT number, number / 50 FROM numbers(100);
|
|
|
|
INSERT INTO t_skip_index_insert SELECT number, number / 50 FROM numbers(100, 100);
|
|
|
|
|
|
|
|
SET mutations_sync = 2;
|
|
|
|
|
|
|
|
ALTER TABLE t_skip_index_insert MATERIALIZE INDEX idx_a;
|
|
|
|
ALTER TABLE t_skip_index_insert MATERIALIZE INDEX idx_b;
|
|
|
|
|
|
|
|
SELECT count() FROM t_skip_index_insert WHERE a >= 110 AND a < 130 AND b = 2;
|
|
|
|
EXPLAIN indexes = 1 SELECT count() FROM t_skip_index_insert WHERE a >= 110 AND a < 130 AND b = 2;
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS t_skip_index_insert;
|
|
|
|
|
|
|
|
SYSTEM FLUSH LOGS;
|
|
|
|
|
|
|
|
SELECT count(), sum(ProfileEvents['MergeTreeDataWriterSkipIndicesCalculationMicroseconds'])
|
|
|
|
FROM system.query_log
|
|
|
|
WHERE current_database = currentDatabase()
|
|
|
|
AND query LIKE 'INSERT INTO t_skip_index_insert SELECT%'
|
|
|
|
AND type = 'QueryFinish';
|