CREATE TABLE simple_key_range_hashed_dictionary_source_table
(
id UInt64,
value UInt64,
start UInt64,
end UInt64
) ENGINE = Memory;
CREATE TABLE complex_key_range_hashed_dictionary_source_table
(
id UInt64,
id_key String,
value UInt64,
start UInt64,
end UInt64
) ENGINE = Memory;
CREATE DICTIONARY simple_key_range_hashed_dictionary
(
id UInt64,
value UInt64,
start UInt64,
end UInt64
)
PRIMARY KEY id
SOURCE(CLICKHOUSE(DB 'default' TABLE 'simple_key_range_hashed_dictionary_source_table'))
LAYOUT(RANGE_HASHED())
RANGE(MIN start MAX end)
LIFETIME(MIN 0 MAX 1000);
CREATE DICTIONARY complex_key_range_hashed_dictionary
(
id UInt64,
id_key String,
value UInt64,
start UInt64,
end UInt64
)
PRIMARY KEY id, id_key
SOURCE(CLICKHOUSE(DB 'default' TABLE 'complex_key_range_hashed_dictionary_source_table'))
LAYOUT(COMPLEX_KEY_RANGE_HASHED())
RANGE(MIN start MAX end)
LIFETIME(MIN 0 MAX 1000);
INSERT INTO simple_key_range_hashed_dictionary_source_table
SELECT key, key, range_start * 2, range_start * 2 + 1 FROM
(SELECT number as key FROM numbers(10000)) as keys,
(SELECT number as range_start FROM numbers(1000)) as ranges;
INSERT INTO complex_key_range_hashed_dictionary_source_table
SELECT key, toString(key), key, range_start * 2, range_start * 2 + 1 FROM
(SELECT number as key FROM numbers(10000)) as keys,
(SELECT number as range_start FROM numbers(1000)) as ranges;
elements_count
500000
750000
WITH rand64() % 5000 as key
SELECT dictGet('default.simple_key_range_hashed_dictionary', 'value', toUInt64(key), key)
FROM system.numbers
LIMIT {elements_count}
FORMAT Null;
WITH rand64() % 5000 as key
SELECT dictHas('default.simple_key_range_hashed_dictionary', toUInt64(key), key)
FROM system.numbers
LIMIT {elements_count}
FORMAT Null;
SELECT * FROM simple_key_range_hashed_dictionary
FORMAT Null;
WITH (rand64() % toUInt64(5000) as key, toString(key) as key_id) as complex_key
SELECT dictGet('default.complex_key_range_hashed_dictionary', 'value', complex_key, key)
FROM system.numbers
LIMIT {elements_count}
FORMAT Null;
WITH (rand64() % toUInt64(5000) as key, toString(key) as key_id) as complex_key
SELECT dictHas('default.complex_key_range_hashed_dictionary', complex_key, key)
FROM system.numbers
LIMIT {elements_count}
FORMAT Null;
SELECT * FROM complex_key_range_hashed_dictionary
FORMAT Null;
DROP TABLE IF EXISTS simple_key_range_hashed_dictionary_source_table;
DROP TABLE IF EXISTS complex_key_range_hashed_dictionary_source_table;
DROP DICTIONARY IF EXISTS simple_key_range_hashed_dictionary;
DROP DICTIONARY IF EXISTS complex_key_range_hashed_dictionary;