mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Backfill json histogram bounds during building
Signed-off-by: Michael Okoko <okokomichaels@outlook.com>
This commit is contained in:
committed by
Sergei Petrunia
parent
3d952cd8bd
commit
e10d99ce87
38
mysql-test/main/st_play.result
Normal file
38
mysql-test/main/st_play.result
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
create table users (
|
||||||
|
city varchar(100)
|
||||||
|
);
|
||||||
|
insert into users select 'Moscow' from seq_1_to_99;
|
||||||
|
insert into users select 'Helsinki' from seq_1_to_2;
|
||||||
|
analyze table users persistent for all;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.users analyze status Engine-independent statistics collected
|
||||||
|
test.users analyze status OK
|
||||||
|
select hex(histogram) from mysql.column_stats where table_name='users';
|
||||||
|
hex(histogram)
|
||||||
|
00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||||
|
explain extended select * from users where city = 'Moscow';
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE users ALL NULL NULL NULL NULL 101 97.66 Using where
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`users`.`city` AS `city` from `test`.`users` where `test`.`users`.`city` = 'Moscow'
|
||||||
|
analyze select * from users where city = 'Moscow';
|
||||||
|
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||||
|
1 SIMPLE users ALL NULL NULL NULL NULL 101 101.00 97.66 98.02 Using where
|
||||||
|
delete from mysql.column_stats where table_name='users';
|
||||||
|
set histogram_type=json;
|
||||||
|
set histogram_size=10;
|
||||||
|
analyze table users persistent for all;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.users analyze status Engine-independent statistics collected
|
||||||
|
test.users analyze status Table is already up to date
|
||||||
|
select histogram from mysql.column_stats where table_name='users';
|
||||||
|
histogram
|
||||||
|
[]
|
||||||
|
explain extended select * from users where city = 'Moscow';
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE users ALL NULL NULL NULL NULL 101 50.00 Using where
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`users`.`city` AS `city` from `test`.`users` where `test`.`users`.`city` = 'Moscow'
|
||||||
|
analyze select * from users where city = 'Moscow';
|
||||||
|
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||||
|
1 SIMPLE users ALL NULL NULL NULL NULL 101 101.00 50.00 98.02 Using where
|
21
mysql-test/main/st_play.test
Normal file
21
mysql-test/main/st_play.test
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
--source include/have_sequence.inc
|
||||||
|
create table users (
|
||||||
|
city varchar(100)
|
||||||
|
);
|
||||||
|
insert into users select 'Moscow' from seq_1_to_99;
|
||||||
|
insert into users select 'Helsinki' from seq_1_to_2;
|
||||||
|
|
||||||
|
analyze table users persistent for all;
|
||||||
|
select hex(histogram) from mysql.column_stats where table_name='users';
|
||||||
|
explain extended select * from users where city = 'Moscow';
|
||||||
|
analyze select * from users where city = 'Moscow';
|
||||||
|
|
||||||
|
delete from mysql.column_stats where table_name='users';
|
||||||
|
|
||||||
|
set histogram_type=json;
|
||||||
|
set histogram_size=10;
|
||||||
|
|
||||||
|
analyze table users persistent for all;
|
||||||
|
select histogram from mysql.column_stats where table_name='users';
|
||||||
|
explain extended select * from users where city = 'Moscow';
|
||||||
|
analyze select * from users where city = 'Moscow';
|
@@ -8,22 +8,22 @@ create table ten(a int primary key);
|
|||||||
insert into ten values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
insert into ten values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
create table t1_bin (a varchar(255));
|
create table t1_bin (a varchar(255));
|
||||||
insert into t1_bin select concat('a-', a) from ten;
|
insert into t1_bin select concat('a-', a) from ten;
|
||||||
set histogram_size=10;
|
set histogram_size=100;
|
||||||
analyze table t1_bin persistent for all;
|
analyze table t1_bin persistent for all;
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1_bin analyze status Engine-independent statistics collected
|
test.t1_bin analyze status Engine-independent statistics collected
|
||||||
test.t1_bin analyze status OK
|
test.t1_bin analyze status OK
|
||||||
select hex(histogram) from mysql.column_stats where table_name='t1_bin';
|
select hex(histogram) from mysql.column_stats where table_name='t1_bin';
|
||||||
hex(histogram)
|
hex(histogram)
|
||||||
711C5555388EAAAA8DE3
|
00000000000000000000711C711C711C711C711CE338E338E338E338E33855555555555555555555C671C671C671C671C671388E388E388E388E388EAAAAAAAAAAAAAAAAAAAA1BC71BC71BC71BC71BC78DE38DE38DE38DE38DE3FFFFFFFFFFFFFFFFFFFF
|
||||||
explain extended select * from t1_bin where a between 'a-3a' and 'zzzzzzzzz';
|
explain extended select * from t1_bin where a between 'a-3a' and 'zzzzzzzzz';
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t1_bin ALL NULL NULL NULL NULL 10 50.00 Using where
|
1 SIMPLE t1_bin ALL NULL NULL NULL NULL 10 58.82 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1_bin`.`a` AS `a` from `test`.`t1_bin` where `test`.`t1_bin`.`a` between 'a-3a' and 'zzzzzzzzz'
|
Note 1003 select `test`.`t1_bin`.`a` AS `a` from `test`.`t1_bin` where `test`.`t1_bin`.`a` between 'a-3a' and 'zzzzzzzzz'
|
||||||
analyze select * from t1_bin where a between 'a-3a' and 'zzzzzzzzz';
|
analyze select * from t1_bin where a between 'a-3a' and 'zzzzzzzzz';
|
||||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||||
1 SIMPLE t1_bin ALL NULL NULL NULL NULL 10 10.00 50.00 60.00 Using where
|
1 SIMPLE t1_bin ALL NULL NULL NULL NULL 10 10.00 58.82 60.00 Using where
|
||||||
create table t1_json (a varchar(255));
|
create table t1_json (a varchar(255));
|
||||||
insert into t1_json select concat('a-', a) from ten;
|
insert into t1_json select concat('a-', a) from ten;
|
||||||
set histogram_type=json;
|
set histogram_type=json;
|
||||||
@@ -33,26 +33,116 @@ test.t1_json analyze status Engine-independent statistics collected
|
|||||||
test.t1_json analyze status OK
|
test.t1_json analyze status OK
|
||||||
select * from mysql.column_stats where table_name='t1_json';
|
select * from mysql.column_stats where table_name='t1_json';
|
||||||
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
||||||
test t1_json a a-0 a-9 0.0000 3.0000 1.0000 10 JSON [
|
test t1_json a a-0 a-9 0.0000 3.0000 1.0000 100 JSON [
|
||||||
|
"a-0",
|
||||||
|
"a-0",
|
||||||
|
"a-0",
|
||||||
|
"a-0",
|
||||||
|
"a-0",
|
||||||
|
"a-0",
|
||||||
|
"a-0",
|
||||||
|
"a-0",
|
||||||
|
"a-0",
|
||||||
"a-0",
|
"a-0",
|
||||||
"a-1",
|
"a-1",
|
||||||
|
"a-1",
|
||||||
|
"a-1",
|
||||||
|
"a-1",
|
||||||
|
"a-1",
|
||||||
|
"a-1",
|
||||||
|
"a-1",
|
||||||
|
"a-1",
|
||||||
|
"a-1",
|
||||||
|
"a-1",
|
||||||
|
"a-2",
|
||||||
|
"a-2",
|
||||||
|
"a-2",
|
||||||
|
"a-2",
|
||||||
|
"a-2",
|
||||||
|
"a-2",
|
||||||
|
"a-2",
|
||||||
|
"a-2",
|
||||||
|
"a-2",
|
||||||
"a-2",
|
"a-2",
|
||||||
"a-3",
|
"a-3",
|
||||||
|
"a-3",
|
||||||
|
"a-3",
|
||||||
|
"a-3",
|
||||||
|
"a-3",
|
||||||
|
"a-3",
|
||||||
|
"a-3",
|
||||||
|
"a-3",
|
||||||
|
"a-3",
|
||||||
|
"a-3",
|
||||||
|
"a-4",
|
||||||
|
"a-4",
|
||||||
|
"a-4",
|
||||||
|
"a-4",
|
||||||
|
"a-4",
|
||||||
|
"a-4",
|
||||||
|
"a-4",
|
||||||
|
"a-4",
|
||||||
|
"a-4",
|
||||||
"a-4",
|
"a-4",
|
||||||
"a-5",
|
"a-5",
|
||||||
|
"a-5",
|
||||||
|
"a-5",
|
||||||
|
"a-5",
|
||||||
|
"a-5",
|
||||||
|
"a-5",
|
||||||
|
"a-5",
|
||||||
|
"a-5",
|
||||||
|
"a-5",
|
||||||
|
"a-5",
|
||||||
|
"a-6",
|
||||||
|
"a-6",
|
||||||
|
"a-6",
|
||||||
|
"a-6",
|
||||||
|
"a-6",
|
||||||
|
"a-6",
|
||||||
|
"a-6",
|
||||||
|
"a-6",
|
||||||
|
"a-6",
|
||||||
"a-6",
|
"a-6",
|
||||||
"a-7",
|
"a-7",
|
||||||
|
"a-7",
|
||||||
|
"a-7",
|
||||||
|
"a-7",
|
||||||
|
"a-7",
|
||||||
|
"a-7",
|
||||||
|
"a-7",
|
||||||
|
"a-7",
|
||||||
|
"a-7",
|
||||||
|
"a-7",
|
||||||
"a-8",
|
"a-8",
|
||||||
|
"a-8",
|
||||||
|
"a-8",
|
||||||
|
"a-8",
|
||||||
|
"a-8",
|
||||||
|
"a-8",
|
||||||
|
"a-8",
|
||||||
|
"a-8",
|
||||||
|
"a-8",
|
||||||
|
"a-8",
|
||||||
|
"a-9",
|
||||||
|
"a-9",
|
||||||
|
"a-9",
|
||||||
|
"a-9",
|
||||||
|
"a-9",
|
||||||
|
"a-9",
|
||||||
|
"a-9",
|
||||||
|
"a-9",
|
||||||
|
"a-9",
|
||||||
"a-9"
|
"a-9"
|
||||||
]
|
]
|
||||||
explain extended select * from t1_json where a between 'a-3a' and 'zzzzzzzzz';
|
explain extended select * from t1_json where a between 'a-3a' and 'zzzzzzzzz';
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t1_json ALL NULL NULL NULL NULL 10 68.71 Using where
|
1 SIMPLE t1_json ALL NULL NULL NULL NULL 10 60.87 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1_json`.`a` AS `a` from `test`.`t1_json` where `test`.`t1_json`.`a` between 'a-3a' and 'zzzzzzzzz'
|
Note 1003 select `test`.`t1_json`.`a` AS `a` from `test`.`t1_json` where `test`.`t1_json`.`a` between 'a-3a' and 'zzzzzzzzz'
|
||||||
analyze select * from t1_json where a between 'a-3a' and 'zzzzzzzzz';
|
analyze select * from t1_json where a between 'a-3a' and 'zzzzzzzzz';
|
||||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||||
1 SIMPLE t1_json ALL NULL NULL NULL NULL 10 10.00 68.71 60.00 Using where
|
1 SIMPLE t1_json ALL NULL NULL NULL NULL 10 10.00 60.87 60.00 Using where
|
||||||
create table t2_bin(a int);
|
create table t2_bin(a int);
|
||||||
insert into t2_bin select a*10 from ten;
|
insert into t2_bin select a*10 from ten;
|
||||||
set histogram_type=@save_histogram_type;
|
set histogram_type=@save_histogram_type;
|
||||||
@@ -62,12 +152,12 @@ test.t2_bin analyze status Engine-independent statistics collected
|
|||||||
test.t2_bin analyze status OK
|
test.t2_bin analyze status OK
|
||||||
explain extended select * from t2_bin where a between '44' and '55';
|
explain extended select * from t2_bin where a between '44' and '55';
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t2_bin ALL NULL NULL NULL NULL 10 33.33 Using where
|
1 SIMPLE t2_bin ALL NULL NULL NULL NULL 10 11.76 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t2_bin`.`a` AS `a` from `test`.`t2_bin` where `test`.`t2_bin`.`a` between '44' and '55'
|
Note 1003 select `test`.`t2_bin`.`a` AS `a` from `test`.`t2_bin` where `test`.`t2_bin`.`a` between '44' and '55'
|
||||||
analyze select * from t2_bin where a between '44' and '55';
|
analyze select * from t2_bin where a between '44' and '55';
|
||||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||||
1 SIMPLE t2_bin ALL NULL NULL NULL NULL 10 10.00 33.33 10.00 Using where
|
1 SIMPLE t2_bin ALL NULL NULL NULL NULL 10 10.00 11.76 10.00 Using where
|
||||||
create table t2_json(a int);
|
create table t2_json(a int);
|
||||||
insert into t2_json select a*10 from ten;
|
insert into t2_json select a*10 from ten;
|
||||||
set histogram_type=json;
|
set histogram_type=json;
|
||||||
@@ -77,27 +167,191 @@ test.t2_json analyze status Engine-independent statistics collected
|
|||||||
test.t2_json analyze status OK
|
test.t2_json analyze status OK
|
||||||
select * from mysql.column_stats where table_name='t2_json';
|
select * from mysql.column_stats where table_name='t2_json';
|
||||||
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
||||||
test t2_json a 0 90 0.0000 4.0000 1.0000 10 JSON [
|
test t2_json a 0 90 0.0000 4.0000 1.0000 100 JSON [
|
||||||
|
"0",
|
||||||
|
"0",
|
||||||
|
"0",
|
||||||
|
"0",
|
||||||
|
"0",
|
||||||
|
"0",
|
||||||
|
"0",
|
||||||
|
"0",
|
||||||
|
"0",
|
||||||
"0",
|
"0",
|
||||||
"10",
|
"10",
|
||||||
|
"10",
|
||||||
|
"10",
|
||||||
|
"10",
|
||||||
|
"10",
|
||||||
|
"10",
|
||||||
|
"10",
|
||||||
|
"10",
|
||||||
|
"10",
|
||||||
|
"10",
|
||||||
|
"20",
|
||||||
|
"20",
|
||||||
|
"20",
|
||||||
|
"20",
|
||||||
|
"20",
|
||||||
|
"20",
|
||||||
|
"20",
|
||||||
|
"20",
|
||||||
|
"20",
|
||||||
"20",
|
"20",
|
||||||
"30",
|
"30",
|
||||||
|
"30",
|
||||||
|
"30",
|
||||||
|
"30",
|
||||||
|
"30",
|
||||||
|
"30",
|
||||||
|
"30",
|
||||||
|
"30",
|
||||||
|
"30",
|
||||||
|
"30",
|
||||||
|
"40",
|
||||||
|
"40",
|
||||||
|
"40",
|
||||||
|
"40",
|
||||||
|
"40",
|
||||||
|
"40",
|
||||||
|
"40",
|
||||||
|
"40",
|
||||||
|
"40",
|
||||||
"40",
|
"40",
|
||||||
"50",
|
"50",
|
||||||
|
"50",
|
||||||
|
"50",
|
||||||
|
"50",
|
||||||
|
"50",
|
||||||
|
"50",
|
||||||
|
"50",
|
||||||
|
"50",
|
||||||
|
"50",
|
||||||
|
"50",
|
||||||
|
"60",
|
||||||
|
"60",
|
||||||
|
"60",
|
||||||
|
"60",
|
||||||
|
"60",
|
||||||
|
"60",
|
||||||
|
"60",
|
||||||
|
"60",
|
||||||
|
"60",
|
||||||
"60",
|
"60",
|
||||||
"70",
|
"70",
|
||||||
|
"70",
|
||||||
|
"70",
|
||||||
|
"70",
|
||||||
|
"70",
|
||||||
|
"70",
|
||||||
|
"70",
|
||||||
|
"70",
|
||||||
|
"70",
|
||||||
|
"70",
|
||||||
"80",
|
"80",
|
||||||
|
"80",
|
||||||
|
"80",
|
||||||
|
"80",
|
||||||
|
"80",
|
||||||
|
"80",
|
||||||
|
"80",
|
||||||
|
"80",
|
||||||
|
"80",
|
||||||
|
"80",
|
||||||
|
"90",
|
||||||
|
"90",
|
||||||
|
"90",
|
||||||
|
"90",
|
||||||
|
"90",
|
||||||
|
"90",
|
||||||
|
"90",
|
||||||
|
"90",
|
||||||
|
"90",
|
||||||
"90"
|
"90"
|
||||||
]
|
]
|
||||||
explain extended select * from t2_json where a between '44' and '55';
|
explain extended select * from t2_json where a between '44' and '55';
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t2_json ALL NULL NULL NULL NULL 10 11.00 Using where
|
1 SIMPLE t2_json ALL NULL NULL NULL NULL 10 10.10 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t2_json`.`a` AS `a` from `test`.`t2_json` where `test`.`t2_json`.`a` between '44' and '55'
|
Note 1003 select `test`.`t2_json`.`a` AS `a` from `test`.`t2_json` where `test`.`t2_json`.`a` between '44' and '55'
|
||||||
analyze select * from t2_json where a between '44' and '55';
|
analyze select * from t2_json where a between '44' and '55';
|
||||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||||
1 SIMPLE t2_json ALL NULL NULL NULL NULL 10 10.00 11.00 10.00 Using where
|
1 SIMPLE t2_json ALL NULL NULL NULL NULL 10 10.00 10.10 10.00 Using where
|
||||||
|
create table users (
|
||||||
|
city varchar(100)
|
||||||
|
);
|
||||||
|
set histogram_size=50;
|
||||||
|
insert into users select 'Moscow' from seq_1_to_99;
|
||||||
|
insert into users select 'Helsinki' from seq_1_to_2;
|
||||||
|
set histogram_type=json;
|
||||||
|
analyze table users persistent for all;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.users analyze status Engine-independent statistics collected
|
||||||
|
test.users analyze status OK
|
||||||
|
select histogram from mysql.column_stats where table_name='users';
|
||||||
|
histogram
|
||||||
|
[
|
||||||
|
"Helsinki",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow",
|
||||||
|
"Moscow"
|
||||||
|
]
|
||||||
|
explain extended select * from users where city <= 'Moscow';
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE users ALL NULL NULL NULL NULL 101 100.00 Using where
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`users`.`city` AS `city` from `test`.`users` where `test`.`users`.`city` <= 'Moscow'
|
||||||
|
analyze select * from users where city <= 'Moscow';
|
||||||
|
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||||
|
1 SIMPLE users ALL NULL NULL NULL NULL 101 101.00 100.00 100.00 Using where
|
||||||
drop table t1_bin;
|
drop table t1_bin;
|
||||||
drop table t1_json;
|
drop table t1_json;
|
||||||
drop table t2_bin;
|
drop table t2_bin;
|
||||||
drop table t2_json;
|
drop table t2_json;
|
||||||
|
drop table users;
|
||||||
|
@@ -12,7 +12,7 @@ insert into ten values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
|||||||
create table t1_bin (a varchar(255));
|
create table t1_bin (a varchar(255));
|
||||||
insert into t1_bin select concat('a-', a) from ten;
|
insert into t1_bin select concat('a-', a) from ten;
|
||||||
|
|
||||||
set histogram_size=10;
|
set histogram_size=100;
|
||||||
analyze table t1_bin persistent for all;
|
analyze table t1_bin persistent for all;
|
||||||
select hex(histogram) from mysql.column_stats where table_name='t1_bin';
|
select hex(histogram) from mysql.column_stats where table_name='t1_bin';
|
||||||
explain extended select * from t1_bin where a between 'a-3a' and 'zzzzzzzzz';
|
explain extended select * from t1_bin where a between 'a-3a' and 'zzzzzzzzz';
|
||||||
@@ -42,8 +42,23 @@ select * from mysql.column_stats where table_name='t2_json';
|
|||||||
explain extended select * from t2_json where a between '44' and '55';
|
explain extended select * from t2_json where a between '44' and '55';
|
||||||
analyze select * from t2_json where a between '44' and '55';
|
analyze select * from t2_json where a between '44' and '55';
|
||||||
|
|
||||||
|
--source include/have_sequence.inc
|
||||||
|
create table users (
|
||||||
|
city varchar(100)
|
||||||
|
);
|
||||||
|
set histogram_size=50;
|
||||||
|
insert into users select 'Moscow' from seq_1_to_99;
|
||||||
|
insert into users select 'Helsinki' from seq_1_to_2;
|
||||||
|
set histogram_type=json;
|
||||||
|
analyze table users persistent for all;
|
||||||
|
select histogram from mysql.column_stats where table_name='users';
|
||||||
|
explain extended select * from users where city <= 'Moscow';
|
||||||
|
analyze select * from users where city <= 'Moscow';
|
||||||
|
|
||||||
|
|
||||||
drop table t1_bin;
|
drop table t1_bin;
|
||||||
drop table t1_json;
|
drop table t1_json;
|
||||||
drop table t2_bin;
|
drop table t2_bin;
|
||||||
drop table t2_json;
|
drop table t2_json;
|
||||||
|
drop table users;
|
||||||
|
|
||||||
|
@@ -95,38 +95,139 @@ test t1 a 0 49 0.0000 4.0000 1.0000 25 JSON [
|
|||||||
"44",
|
"44",
|
||||||
"47"
|
"47"
|
||||||
]
|
]
|
||||||
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.2000 17.1250 6.4000 5 JSON [
|
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.2000 17.1250 6.4000 25 JSON [
|
||||||
|
"vvvvvvvvvvvvv",
|
||||||
|
"vvvvvvvvvvvvv",
|
||||||
|
"vvvvvvvvvvvvv",
|
||||||
|
"vvvvvvvvvvvvv",
|
||||||
|
"vvvvvvvvvvvvv",
|
||||||
"vvvvvvvvvvvvv",
|
"vvvvvvvvvvvvv",
|
||||||
"wwwwwwwwwwwwwwwwwwwwwwwwwwww",
|
"wwwwwwwwwwwwwwwwwwwwwwwwwwww",
|
||||||
|
"wwwwwwwwwwwwwwwwwwwwwwwwwwww",
|
||||||
|
"wwwwwwwwwwwwwwwwwwwwwwwwwwww",
|
||||||
|
"wwwwwwwwwwwwwwwwwwwwwwwwwwww",
|
||||||
|
"wwwwwwwwwwwwwwwwwwwwwwwwwwww",
|
||||||
|
"wwwwwwwwwwwwwwwwwwwwwwwwwwww",
|
||||||
|
"xxxxxxxxxxxxxxxxxxxxxxxxxx",
|
||||||
|
"xxxxxxxxxxxxxxxxxxxxxxxxxx",
|
||||||
"xxxxxxxxxxxxxxxxxxxxxxxxxx",
|
"xxxxxxxxxxxxxxxxxxxxxxxxxx",
|
||||||
"yyy",
|
"yyy",
|
||||||
|
"yyy",
|
||||||
|
"yyy",
|
||||||
|
"yyy",
|
||||||
|
"yyy",
|
||||||
|
"zzzzzzzzzzzzzzzzzz",
|
||||||
|
"zzzzzzzzzzzzzzzzzz",
|
||||||
|
"zzzzzzzzzzzzzzzzzz",
|
||||||
|
"zzzzzzzzzzzzzzzzzz",
|
||||||
"zzzzzzzzzzzzzzzzzz"
|
"zzzzzzzzzzzzzzzzzz"
|
||||||
]
|
]
|
||||||
test t1 c aaaa dddddddd 0.1250 6.6571 7.0000 5 JSON [
|
test t1 c aaaa dddddddd 0.1250 6.6571 7.0000 25 JSON [
|
||||||
|
"aaaa",
|
||||||
|
"aaaa",
|
||||||
|
"aaaa",
|
||||||
|
"aaaa",
|
||||||
|
"aaaa",
|
||||||
"aaaa",
|
"aaaa",
|
||||||
"bbb",
|
"bbb",
|
||||||
"bbbbbb",
|
"bbbbbb",
|
||||||
|
"bbbbbb",
|
||||||
|
"bbbbbb",
|
||||||
|
"bbbbbb",
|
||||||
|
"bbbbbb",
|
||||||
"ccccccccc",
|
"ccccccccc",
|
||||||
|
"ccccccccc",
|
||||||
|
"ccccccccc",
|
||||||
|
"ccccccccc",
|
||||||
|
"ccccccccc",
|
||||||
|
"ccccccccc",
|
||||||
|
"dddddddd",
|
||||||
|
"dddddddd",
|
||||||
|
"dddddddd",
|
||||||
|
"dddddddd",
|
||||||
|
"dddddddd",
|
||||||
|
"dddddddd",
|
||||||
"dddddddd"
|
"dddddddd"
|
||||||
]
|
]
|
||||||
test t1 d 1989-03-12 1999-07-23 0.1500 3.0000 8.5000 4 JSON [
|
test t1 d 1989-03-12 1999-07-23 0.1500 3.0000 8.5000 25 JSON [
|
||||||
|
"1989-03-12",
|
||||||
|
"1989-03-12",
|
||||||
|
"1989-03-12",
|
||||||
|
"1989-03-12",
|
||||||
|
"1989-03-12",
|
||||||
|
"1989-03-12",
|
||||||
|
"1989-03-12",
|
||||||
"1989-03-12",
|
"1989-03-12",
|
||||||
"1990-05-15",
|
"1990-05-15",
|
||||||
"1998-08-28",
|
"1990-05-15",
|
||||||
|
"1990-05-15",
|
||||||
|
"1990-05-15",
|
||||||
|
"1990-05-15",
|
||||||
|
"1990-05-15",
|
||||||
|
"1990-05-15",
|
||||||
|
"1990-05-15",
|
||||||
|
"1990-05-15",
|
||||||
|
"1990-05-15",
|
||||||
|
"1990-05-15",
|
||||||
|
"1999-07-23",
|
||||||
|
"1999-07-23",
|
||||||
|
"1999-07-23",
|
||||||
|
"1999-07-23",
|
||||||
|
"1999-07-23",
|
||||||
"1999-07-23"
|
"1999-07-23"
|
||||||
]
|
]
|
||||||
test t1 e 0.01 0.112 0.2250 8.0000 6.2000 5 JSON [
|
test t1 e 0.01 0.112 0.2250 8.0000 6.2000 25 JSON [
|
||||||
|
"0.01",
|
||||||
|
"0.01",
|
||||||
|
"0.01",
|
||||||
|
"0.01",
|
||||||
|
"0.01",
|
||||||
|
"0.01",
|
||||||
|
"0.01",
|
||||||
|
"0.01",
|
||||||
|
"0.01",
|
||||||
"0.01",
|
"0.01",
|
||||||
"0.012",
|
"0.012",
|
||||||
"0.05",
|
"0.05",
|
||||||
|
"0.05",
|
||||||
|
"0.05",
|
||||||
|
"0.05",
|
||||||
"0.1",
|
"0.1",
|
||||||
|
"0.1",
|
||||||
|
"0.1",
|
||||||
|
"0.1",
|
||||||
|
"0.1",
|
||||||
|
"0.1",
|
||||||
|
"0.1",
|
||||||
|
"0.112",
|
||||||
|
"0.112",
|
||||||
"0.112"
|
"0.112"
|
||||||
]
|
]
|
||||||
test t1 f 1 5 0.2000 1.0000 6.4000 5 JSON [
|
test t1 f 1 5 0.2000 1.0000 6.4000 25 JSON [
|
||||||
|
"",
|
||||||
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
""
|
""
|
||||||
]
|
]
|
||||||
SELECT * FROM mysql.index_stats;
|
SELECT * FROM mysql.index_stats;
|
||||||
@@ -528,14 +629,14 @@ Country ABW ZWE 50 JSON [
|
|||||||
"ARM",
|
"ARM",
|
||||||
"BHS",
|
"BHS",
|
||||||
"BRA",
|
"BRA",
|
||||||
"BRB",
|
"BRA",
|
||||||
"BRN",
|
"BRA",
|
||||||
"CAN",
|
"CAN",
|
||||||
"CHN",
|
"CHN",
|
||||||
"CIV",
|
"CHN",
|
||||||
"CMR",
|
"CHN",
|
||||||
"COD",
|
"CHN",
|
||||||
"COG",
|
"CHN",
|
||||||
"COL",
|
"COL",
|
||||||
"DEU",
|
"DEU",
|
||||||
"DZA",
|
"DZA",
|
||||||
@@ -543,20 +644,20 @@ Country ABW ZWE 50 JSON [
|
|||||||
"FRA",
|
"FRA",
|
||||||
"GBR",
|
"GBR",
|
||||||
"IDN",
|
"IDN",
|
||||||
|
"IDN",
|
||||||
|
"IND",
|
||||||
|
"IND",
|
||||||
|
"IND",
|
||||||
"IND",
|
"IND",
|
||||||
"IRL",
|
|
||||||
"IRN",
|
"IRN",
|
||||||
"IRQ",
|
|
||||||
"ISL",
|
|
||||||
"ISR",
|
|
||||||
"ITA",
|
"ITA",
|
||||||
"JPN",
|
"JPN",
|
||||||
"KAZ",
|
"JPN",
|
||||||
"KEN",
|
"JPN",
|
||||||
"KOR",
|
"KOR",
|
||||||
"LKA",
|
"LKA",
|
||||||
"MEX",
|
"MEX",
|
||||||
"MHL",
|
"MEX",
|
||||||
"MMR",
|
"MMR",
|
||||||
"NGA",
|
"NGA",
|
||||||
"NZL",
|
"NZL",
|
||||||
@@ -565,15 +666,15 @@ Country ABW ZWE 50 JSON [
|
|||||||
"POL",
|
"POL",
|
||||||
"QAT",
|
"QAT",
|
||||||
"RUS",
|
"RUS",
|
||||||
"RWA",
|
"RUS",
|
||||||
"SAU",
|
"SAU",
|
||||||
"TCD",
|
"TCD",
|
||||||
"TUR",
|
"TUR",
|
||||||
"UKR",
|
"UKR",
|
||||||
"USA",
|
"USA",
|
||||||
"UZB",
|
"USA",
|
||||||
"VAT",
|
"USA",
|
||||||
"VCT",
|
"USA",
|
||||||
"VNM"
|
"VNM"
|
||||||
]
|
]
|
||||||
Population 42 10500000 50 JSON [
|
Population 42 10500000 50 JSON [
|
||||||
@@ -694,10 +795,10 @@ Language Abhyasi [South]Mande 50 JSON [
|
|||||||
"Danish",
|
"Danish",
|
||||||
"Embera",
|
"Embera",
|
||||||
"English",
|
"English",
|
||||||
"Eskimo Languages",
|
"English",
|
||||||
"Estonian",
|
"English",
|
||||||
|
"French",
|
||||||
"French",
|
"French",
|
||||||
"Fries",
|
|
||||||
"Futuna",
|
"Futuna",
|
||||||
"German",
|
"German",
|
||||||
"Greek",
|
"Greek",
|
||||||
@@ -724,7 +825,7 @@ Language Abhyasi [South]Mande 50 JSON [
|
|||||||
"Shona",
|
"Shona",
|
||||||
"Songhai",
|
"Songhai",
|
||||||
"Spanish",
|
"Spanish",
|
||||||
"Sranantonga",
|
"Spanish",
|
||||||
"Tamashek",
|
"Tamashek",
|
||||||
"Thai",
|
"Thai",
|
||||||
"Tswana",
|
"Tswana",
|
||||||
@@ -733,6 +834,8 @@ Language Abhyasi [South]Mande 50 JSON [
|
|||||||
"Wolea"
|
"Wolea"
|
||||||
]
|
]
|
||||||
Percentage 0.0 99.9 50 JSON [
|
Percentage 0.0 99.9 50 JSON [
|
||||||
|
"0.0",
|
||||||
|
"0.0",
|
||||||
"0.0",
|
"0.0",
|
||||||
"0.1",
|
"0.1",
|
||||||
"0.2",
|
"0.2",
|
||||||
@@ -742,8 +845,6 @@ Percentage 0.0 99.9 50 JSON [
|
|||||||
"0.6",
|
"0.6",
|
||||||
"0.7",
|
"0.7",
|
||||||
"0.8",
|
"0.8",
|
||||||
"0.9",
|
|
||||||
"1.0",
|
|
||||||
"1.1",
|
"1.1",
|
||||||
"1.3",
|
"1.3",
|
||||||
"1.4",
|
"1.4",
|
||||||
|
@@ -1988,8 +1988,16 @@ public:
|
|||||||
column->store_field_value((uchar *) elem, col_length);
|
column->store_field_value((uchar *) elem, col_length);
|
||||||
StringBuffer<MAX_FIELD_WIDTH> val;
|
StringBuffer<MAX_FIELD_WIDTH> val;
|
||||||
column->val_str(&val);
|
column->val_str(&val);
|
||||||
bucket_bounds.emplace_back(val.c_ptr());
|
auto it = bucket_bounds.begin();
|
||||||
|
bucket_bounds.insert(it+curr_bucket, val.c_ptr());
|
||||||
curr_bucket++;
|
curr_bucket++;
|
||||||
|
while (curr_bucket != hist_width &&
|
||||||
|
count > bucket_capacity * (curr_bucket + 1))
|
||||||
|
{
|
||||||
|
auto it = bucket_bounds.begin();
|
||||||
|
bucket_bounds.insert(it+curr_bucket, bucket_bounds[curr_bucket-1]);
|
||||||
|
curr_bucket++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user