mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 00:30:49 +00:00
docs upd + tests
This commit is contained in:
parent
c79433e6f4
commit
2997509dbf
@ -5150,7 +5150,7 @@ Allows using statistic to optimize the order of [prewhere conditions](../../sql-
|
|||||||
|
|
||||||
## analyze_index_with_space_filling_curves
|
## analyze_index_with_space_filling_curves
|
||||||
|
|
||||||
If a table has a space-filling curve in its index, e.g. `ORDER BY mortonEncode(x, y)`, and the query has conditions on its arguments, e.g. `x >= 10 AND x <= 20 AND y >= 20 AND y <= 30`, use the space-filling curve for index analysis.
|
If a table has a space-filling curve in its index, e.g. `ORDER BY mortonEncode(x, y)` or `ORDER BY hilbertEncode(x, y)`, and the query has conditions on its arguments, e.g. `x >= 10 AND x <= 20 AND y >= 20 AND y <= 30`, use the space-filling curve for index analysis.
|
||||||
|
|
||||||
## query_plan_enable_optimizations {#query_plan_enable_optimizations}
|
## query_plan_enable_optimizations {#query_plan_enable_optimizations}
|
||||||
|
|
||||||
|
@ -0,0 +1,9 @@
|
|||||||
|
121
|
||||||
|
121
|
||||||
|
32
|
||||||
|
21
|
||||||
|
10
|
||||||
|
32
|
||||||
|
22
|
||||||
|
11
|
||||||
|
1
|
@ -0,0 +1,35 @@
|
|||||||
|
DROP TABLE IF EXISTS test_hilbert_encode_hilbert_encode;
|
||||||
|
|
||||||
|
CREATE TABLE test_hilbert_encode (x UInt32, y UInt32) ENGINE = MergeTree ORDER BY hilbertEncode(x, y) SETTINGS index_granularity = 8192, index_granularity_bytes = '1Mi';
|
||||||
|
INSERT INTO test_hilbert_encode SELECT number DIV 1024, number % 1024 FROM numbers(1048576);
|
||||||
|
|
||||||
|
SET max_rows_to_read = 8192, force_primary_key = 1, analyze_index_with_space_filling_curves = 1;
|
||||||
|
SELECT count() FROM test_hilbert_encode WHERE x >= 10 AND x <= 20 AND y >= 20 AND y <= 30;
|
||||||
|
|
||||||
|
SET max_rows_to_read = 8192, force_primary_key = 1, analyze_index_with_space_filling_curves = 0;
|
||||||
|
SELECT count() FROM test_hilbert_encode WHERE x >= 10 AND x <= 20 AND y >= 20 AND y <= 30; -- { serverError 277 }
|
||||||
|
|
||||||
|
DROP TABLE test_hilbert_encode;
|
||||||
|
|
||||||
|
-- The same, but with more precise index
|
||||||
|
|
||||||
|
CREATE TABLE test_hilbert_encode (x UInt32, y UInt32) ENGINE = MergeTree ORDER BY hilbertEncode(x, y) SETTINGS index_granularity = 1;
|
||||||
|
SET max_rows_to_read = 0;
|
||||||
|
INSERT INTO test_hilbert_encode SELECT number DIV 32, number % 32 FROM numbers(1024);
|
||||||
|
|
||||||
|
SET max_rows_to_read = 200, force_primary_key = 1, analyze_index_with_space_filling_curves = 1;
|
||||||
|
SELECT count() FROM test_hilbert_encode WHERE x >= 10 AND x <= 20 AND y >= 20 AND y <= 30;
|
||||||
|
|
||||||
|
-- Various other conditions
|
||||||
|
|
||||||
|
SELECT count() FROM test_hilbert_encode WHERE x = 10 SETTINGS max_rows_to_read = 64;
|
||||||
|
SELECT count() FROM test_hilbert_encode WHERE x = 10 AND y > 10 SETTINGS max_rows_to_read = 42;
|
||||||
|
SELECT count() FROM test_hilbert_encode WHERE x = 10 AND y < 10 SETTINGS max_rows_to_read = 20;
|
||||||
|
|
||||||
|
SELECT count() FROM test_hilbert_encode WHERE y = 10 SETTINGS max_rows_to_read = 48;
|
||||||
|
SELECT count() FROM test_hilbert_encode WHERE x >= 10 AND y = 10 SETTINGS max_rows_to_read = 33;
|
||||||
|
SELECT count() FROM test_hilbert_encode WHERE y = 10 AND x <= 10 SETTINGS max_rows_to_read = 17;
|
||||||
|
|
||||||
|
SELECT count() FROM test_hilbert_encode PREWHERE x >= 10 WHERE x < 11 AND y = 10 SETTINGS max_rows_to_read = 3;
|
||||||
|
|
||||||
|
DROP TABLE test_hilbert_encode;
|
Loading…
Reference in New Issue
Block a user