ALTER DATABASE test CHARACTER SET latin1 COLLATE latin1_swedish_ci; set @SINGLE_PREC_TYPE='single_prec_hb'; set @DOUBLE_PREC_TYPE='double_prec_hb'; set @DEFAULT_HIST_TYPE='double_prec_hb'; set @save_use_stat_tables=@@use_stat_tables; set @save_histogram_size=@@global.histogram_size; set @@global.histogram_size=0,@@local.histogram_size=0; set @save_hist_type=@DEFAULT_HIST_TYPE; set histogram_type=@SINGLE_PREC_TYPE;
DELETE FROM mysql.table_stats;
DELETE FROM mysql.column_stats;
DELETE FROM mysql.index_stats; set use_stat_tables='preferably';
CREATE TABLE t1 (
a int NOT NULL PRIMARY KEY,
b varchar(32),
c char(16),
d date,
e double,
f bit(3),
INDEX idx1 (b, e),
INDEX idx2 (c, d),
INDEX idx3 (d),
INDEX idx4 (e, b, d)
) ENGINE= MYISAM;
INSERT INTO t1 VALUES
(0, NULL, NULL, NULL, NULL, NULL),
(7, 'xxxxxxxxxxxxxxxxxxxxxxxxxx', 'dddddddd', '1990-05-15', 0.1, b'100'),
(17, 'vvvvvvvvvvvvv', 'aaaa', '1989-03-12', 0.01, b'101'),
(1, 'vvvvvvvvvvvvv', NULL, '1989-03-12', 0.01, b'100'),
(12, 'wwwwwwwwwwwwwwwwwwwwwwwwwwww', 'dddddddd', '1999-07-23', 0.112, b'001'),
(23, 'vvvvvvvvvvvvv', 'dddddddd', '1999-07-23', 0.1, b'100'),
(8, 'vvvvvvvvvvvvv', 'aaaa', '1999-07-23', 0.1, b'100'),
(22, 'xxxxxxxxxxxxxxxxxxxxxxxxxx', 'aaaa', '1989-03-12', 0.112, b'001'),
(31, 'wwwwwwwwwwwwwwwwwwwwwwwwwwww', 'aaaa', '1999-07-23', 0.01, b'001'),
(10, NULL, 'aaaa', NULL, 0.01, b'010'),
(5, 'wwwwwwwwwwwwwwwwwwwwwwwwwwww', 'dddddddd', '1999-07-23', 0.1, b'100'),
(15, 'vvvvvvvvvvvvv', 'ccccccccc', '1990-05-15', 0.1, b'010'),
(30, NULL, 'bbbbbb', NULL, NULL, b'100'),
(38, 'zzzzzzzzzzzzzzzzzz', 'bbbbbb', NULL, NULL, NULL),
(18, 'zzzzzzzzzzzzzzzzzz', 'ccccccccc', '1990-05-15', 0.01, b'010'),
(9, 'yyy', 'bbbbbb', '1998-08-28', 0.01, NULL),
(29, 'vvvvvvvvvvvvv', 'dddddddd', '1999-07-23', 0.012, b'010'),
(3, 'yyy', 'dddddddd', '1990-05-15', 0.112, b'010'),
(39, 'zzzzzzzzzzzzzzzzzz', 'bbbbbb', NULL, 0.01, b'100'),
(14, 'xxxxxxxxxxxxxxxxxxxxxxxxxx', 'ccccccccc', '1990-05-15', 0.1, b'100'),
(40, 'zzzzzzzzzzzzzzzzzz', 'bbbbbb', '1989-03-12', NULL, NULL),
(44, NULL, 'aaaa', '1989-03-12', NULL, b'010'),
(19, 'vvvvvvvvvvvvv', 'ccccccccc', '1990-05-15', 0.012, b'011'),
(21, 'zzzzzzzzzzzzzzzzzz', 'dddddddd', '1989-03-12', 0.112, b'100'),
(45, NULL, NULL, '1989-03-12', NULL, b'011'),
(2, 'wwwwwwwwwwwwwwwwwwwwwwwwwwww', 'ccccccccc', '1990-05-15', 0.1, b'001'),
(35, 'yyy', 'aaaa', '1990-05-15', 0.05, b'011'),
(4, 'vvvvvvvvvvvvv', 'dddddddd', '1999-07-23', 0.01, b'101'),
(47, NULL, 'aaaa', '1990-05-15', 0.05, b'010'),
(42, NULL, 'ccccccccc', '1989-03-12', 0.01, b'010'),
(32, NULL, 'bbbbbb', '1990-05-15', 0.01, b'011'),
(49, 'wwwwwwwwwwwwwwwwwwwwwwwwwwww' , 'aaaa', '1990-05-15', NULL, NULL),
(43, 'wwwwwwwwwwwwwwwwwwwwwwwwwwww' , 'bbbbbb', '1990-05-15', NULL, b'100'),
(37, 'yyy', NULL, '1989-03-12', 0.05, b'011'),
(41, 'xxxxxxxxxxxxxxxxxxxxxxxxxx', 'ccccccccc', '1990-05-15', 0.05, NULL),
(34, 'yyy', NULL, NULL, NULL, NULL),
(33, 'zzzzzzzzzzzzzzzzzz', 'dddddddd', '1989-03-12', 0.05, b'011'),
(24, 'wwwwwwwwwwwwwwwwwwwwwwwwwwww', 'dddddddd', '1990-05-15', 0.01, b'101'),
(11, 'yyy', 'ccccccccc', '1999-07-23', 0.1, NULL),
(25, 'zzzzzzzzzzzzzzzzzz', 'bbb', '1989-03-12', 0.01, b'101');
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
SELECT * FROM mysql.table_stats;
db_name table_name cardinality
test t1 40
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx1 16.4000
test t1 idx1 21.6875
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx3 18.5000
test t1 idx4 16.2000
test t1 idx4 21.6875
test t1 idx4 31.1304
SELECT COUNT(*) FROM t1;
COUNT(*) 40
SELECT * FROM mysql.column_stats
WHERE db_name='test'AND table_name='t1'AND column_name='a';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
SELECT MIN(t1.a), MAX(t1.a),
(SELECT COUNT(*) FROM t1 WHERE t1.b IS NULL) /
(SELECT COUNT(*) FROM t1) AS "NULLS_RATIO(t1.a)",
(SELECT COUNT(t1.a) FROM t1) /
(SELECT COUNT(DISTINCT t1.a) FROM t1) AS "AVG_FREQUENCY(t1.a)"
FROM t1; MIN(t1.a) MAX(t1.a) NULLS_RATIO(t1.a) AVG_FREQUENCY(t1.a) 0490.20001.0000
SELECT * FROM mysql.column_stats
WHERE db_name='test'AND table_name='t1'AND column_name='b';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
SELECT MIN(t1.b), MAX(t1.b),
(SELECT COUNT(*) FROM t1 WHERE t1.b IS NULL) /
(SELECT COUNT(*) FROM t1) AS "NULLS_RATIO(t1.b)",
(SELECT COUNT(t1.b) FROM t1) /
(SELECT COUNT(DISTINCT t1.b) FROM t1) AS "AVG_FREQUENCY(t1.b)"
FROM t1; MIN(t1.b) MAX(t1.b) NULLS_RATIO(t1.b) AVG_FREQUENCY(t1.b)
vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.20006.4000
SELECT * FROM mysql.column_stats
WHERE db_name='test'AND table_name='t1'AND column_name='c';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
SELECT MIN(t1.c), MAX(t1.c),
(SELECT COUNT(*) FROM t1 WHERE t1.c IS NULL) /
(SELECT COUNT(*) FROM t1) AS "NULLS_RATIO(t1.c)",
(SELECT COUNT(t1.c) FROM t1) /
(SELECT COUNT(DISTINCT t1.c) FROM t1) AS "AVG_FREQUENCY(t1.c)"
FROM t1; MIN(t1.c) MAX(t1.c) NULLS_RATIO(t1.c) AVG_FREQUENCY(t1.c)
aaaa dddddddd 0.12507.0000
SELECT * FROM mysql.column_stats
WHERE db_name='test'AND table_name='t1'AND column_name='d';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
SELECT MIN(t1.d), MAX(t1.d),
(SELECT COUNT(*) FROM t1 WHERE t1.d IS NULL) /
(SELECT COUNT(*) FROM t1) AS "NULLS_RATIO(t1.d)",
(SELECT COUNT(t1.d) FROM t1) /
(SELECT COUNT(DISTINCT t1.d) FROM t1) AS "AVG_FREQUENCY(t1.d)"
FROM t1; MIN(t1.d) MAX(t1.d) NULLS_RATIO(t1.d) AVG_FREQUENCY(t1.d) 1989-03-121999-07-230.15008.5000
SELECT * FROM mysql.column_stats
WHERE db_name='test'AND table_name='t1'AND column_name='e';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
SELECT MIN(t1.e), MAX(t1.e),
(SELECT COUNT(*) FROM t1 WHERE t1.e IS NULL) /
(SELECT COUNT(*) FROM t1) AS "NULLS_RATIO(t1.e)",
(SELECT COUNT(t1.e) FROM t1) /
(SELECT COUNT(DISTINCT t1.e) FROM t1) AS "AVG_FREQUENCY(t1.e)"
FROM t1; MIN(t1.e) MAX(t1.e) NULLS_RATIO(t1.e) AVG_FREQUENCY(t1.e) 0.010.1120.22506.2000
SELECT * FROM mysql.index_stats
WHERE db_name='test'AND table_name='t1'AND index_name='idx1';
db_name table_name index_name prefix_arity avg_frequency
test t1 idx1 16.4000
test t1 idx1 21.6875
SELECT
(SELECT COUNT(*) FROM t1 WHERE t1.b IS NOT NULL) /
(SELECT COUNT(DISTINCT t1.b) FROM t1 WHERE t1.b IS NOT NULL)
AS 'ARITY 1',
(SELECT COUNT(*) FROM t1 WHERE t1.b IS NOT NULL AND t1.e IS NOT NULL) /
(SELECT COUNT(DISTINCT t1.b, t1.e) FROM t1
WHERE t1.b IS NOT NULL AND t1.e IS NOT NULL)
AS 'ARITY 2';
ARITY 1 ARITY 2 6.40001.6875
SELECT * FROM mysql.index_stats
WHERE db_name='test'AND table_name='t1'AND index_name='idx2';
db_name table_name index_name prefix_arity avg_frequency
test t1 idx2 17.0000
test t1 idx2 22.3846
SELECT
(SELECT COUNT(*) FROM t1 WHERE t1.c IS NOT NULL) /
(SELECT COUNT(DISTINCT t1.c) FROM t1 WHERE t1.c IS NOT NULL)
AS 'ARITY 1',
(SELECT COUNT(*) FROM t1 WHERE t1.c IS NOT NULL AND t1.d IS NOT NULL) /
(SELECT COUNT(DISTINCT t1.c, t1.d) FROM t1
WHERE t1.c IS NOT NULL AND t1.d IS NOT NULL)
AS 'ARITY 2';
ARITY 1 ARITY 2 7.00002.3846
SELECT * FROM mysql.index_stats
WHERE db_name='test'AND table_name='t1'AND index_name='idx3';
db_name table_name index_name prefix_arity avg_frequency
test t1 idx3 18.5000
SELECT
(SELECT COUNT(*) FROM t1 WHERE t1.d IS NOT NULL) /
(SELECT COUNT(DISTINCT t1.d) FROM t1 WHERE t1.d IS NOT NULL)
AS 'ARITY 1';
ARITY 1 8.5000
SELECT * FROM mysql.index_stats
WHERE db_name='test'AND table_name='t1'AND index_name='idx4';
db_name table_name index_name prefix_arity avg_frequency
test t1 idx4 16.2000
test t1 idx4 21.6875
test t1 idx4 31.1304
SELECT
(SELECT COUNT(*) FROM t1 WHERE t1.e IS NOT NULL) /
(SELECT COUNT(DISTINCT t1.e) FROM t1 WHERE t1.e IS NOT NULL)
AS 'ARITY 1',
(SELECT COUNT(*) FROM t1 WHERE t1.e IS NOT NULL AND t1.b IS NOT NULL) /
(SELECT COUNT(DISTINCT t1.e, t1.b) FROM t1
WHERE t1.e IS NOT NULL AND t1.b IS NOT NULL)
AS 'ARITY 2',
(SELECT COUNT(*) FROM t1
WHERE t1.e IS NOT NULL AND t1.b IS NOT NULL AND t1.d IS NOT NULL) /
(SELECT COUNT(DISTINCT t1.e, t1.b, t1.d) FROM t1
WHERE t1.e IS NOT NULL AND t1.b IS NOT NULL AND t1.d IS NOT NULL)
AS 'ARITY 3';
ARITY 1 ARITY 2 ARITY 3 6.20001.68751.1304
DELETE FROM mysql.column_stats; set histogram_size=4;
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status Table is already up to date
SELECT db_name, table_name, column_name,
min_value, max_value,
nulls_ratio, avg_frequency,
hist_size, hist_type, decode_histogram(hist_type,histogram)
FROM mysql.column_stats
ORDER BY db_name, table_name, column_name;
db_name table_name column_name min_value max_value nulls_ratio avg_frequency hist_size hist_type decode_histogram(hist_type,histogram)
test t1 a 0490.00001.0000 NULL NULL NULL
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.20006.40004 SINGLE_PREC_HB 0.000,0.247,0.502,0.251,0.000
test t1 c aaaa dddddddd 0.12507.00004 SINGLE_PREC_HB 0.000,0.333,0.333,0.333,0.000
test t1 d 1989-03-121999-07-230.15008.50004 SINGLE_PREC_HB 0.000,0.098,0.000,0.902,0.000
test t1 e 0.010.1120.22506.20004 SINGLE_PREC_HB 0.000,0.020,0.373,0.490,0.118
test t1 f 150.20006.40004 SINGLE_PREC_HB 0.247,0.251,0.251,0.000,0.251
DELETE FROM mysql.column_stats; set histogram_size=8; set histogram_type=@DOUBLE_PREC_TYPE;
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status Table is already up to date
SELECT db_name, table_name, column_name,
min_value, max_value,
nulls_ratio, avg_frequency,
hist_size, hist_type, decode_histogram(hist_type,histogram)
FROM mysql.column_stats
ORDER BY db_name, table_name, column_name;
db_name table_name column_name min_value max_value nulls_ratio avg_frequency hist_size hist_type decode_histogram(hist_type,histogram)
test t1 a 0490.00001.0000 NULL NULL NULL
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.20006.40008 DOUBLE_PREC_HB 0.00000,0.24999,0.50001,0.25000,0.00000
test t1 c aaaa dddddddd 0.12507.00008 DOUBLE_PREC_HB 0.00000,0.33333,0.33333,0.33333,0.00000
test t1 d 1989-03-121999-07-230.15008.50008 DOUBLE_PREC_HB 0.00000,0.10161,0.00000,0.89839,0.00000
test t1 e 0.010.1120.22506.20008 DOUBLE_PREC_HB 0.00000,0.01961,0.37255,0.49020,0.11765
test t1 f 150.20006.40008 DOUBLE_PREC_HB 0.24999,0.25000,0.25000,0.00000,0.25000
DELETE FROM mysql.column_stats; set histogram_size= 0; set histogram_type=@SINGLE_PREC_TYPE;
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status Table is already up to date
CREATE TABLE t3 (
a int NOT NULL PRIMARY KEY,
b varchar(32),
c char(16),
INDEX idx (c)
) ENGINE=MYISAM;
INSERT INTO t3 VALUES
(0, NULL, NULL),
(7, 'xxxxxxxxxxxxxxxxxxxxxxxxxx', 'dddddddd'),
(17, 'vvvvvvvvvvvvv', 'aaaa'),
(1, 'vvvvvvvvvvvvv', NULL),
(12, 'wwwwwwwwwwwwwwwwwwwwwwwwwwww', 'dddddddd'),
(23, 'vvvvvvvvvvvvv', 'dddddddd'),
(8, 'vvvvvvvvvvvvv', 'aaaa'),
(22, 'xxxxxxxxxxxxxxxxxxxxxxxxxx', 'aaaa'),
(31, 'wwwwwwwwwwwwwwwwwwwwwwwwwwww', 'aaaa'),
(10, NULL, 'aaaa'),
(5, 'wwwwwwwwwwwwwwwwwwwwwwwwwwww', 'dddddddd'),
(15, 'vvvvvvvvvvvvv', 'ccccccccc'),
(30, NULL, 'bbbbbb'),
(38, 'zzzzzzzzzzzzzzzzzz', 'bbbbbb'),
(18, 'zzzzzzzzzzzzzzzzzz', 'ccccccccc'),
(9, 'yyy', 'bbbbbb'),
(29, 'vvvvvvvvvvvvv', 'dddddddd');
ANALYZE TABLE t3;
Table Op Msg_type Msg_text
test.t3 analyze status Engine-independent statistics collected
test.t3 analyze status OK
SELECT * FROM mysql.table_stats;
db_name table_name cardinality
test t1 40
test t3 17
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
test t3 a 0380.00004.00001.0000 NULL NULL NULL
test t3 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.176518.07142.80000 NULL NULL
test t3 c aaaa dddddddd 0.11766.40003.75000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx1 16.4000
test t1 idx1 21.6875
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx3 18.5000
test t1 idx4 16.2000
test t1 idx4 21.6875
test t1 idx4 31.1304
test t3 PRIMARY 11.0000
test t3 idx 13.7500
ALTER TABLE t1 RENAME TO s1;
SELECT * FROM mysql.table_stats;
db_name table_name cardinality
test s1 40
test t3 17
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test s1 a 0490.00004.00001.0000 NULL NULL NULL
test s1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
test s1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test s1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test s1 e 0.010.1120.22508.00006.20000 NULL NULL
test s1 f 150.20001.00006.40000 NULL NULL
test t3 a 0380.00004.00001.0000 NULL NULL NULL
test t3 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.176518.07142.80000 NULL NULL
test t3 c aaaa dddddddd 0.11766.40003.75000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test s1 PRIMARY 11.0000
test s1 idx1 16.4000
test s1 idx1 21.6875
test s1 idx2 17.0000
test s1 idx2 22.3846
test s1 idx3 18.5000
test s1 idx4 16.2000
test s1 idx4 21.6875
test s1 idx4 31.1304
test t3 PRIMARY 11.0000
test t3 idx 13.7500
RENAME TABLE s1 TO t1;
SELECT * FROM mysql.table_stats;
db_name table_name cardinality
test t1 40
test t3 17
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
test t3 a 0380.00004.00001.0000 NULL NULL NULL
test t3 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.176518.07142.80000 NULL NULL
test t3 c aaaa dddddddd 0.11766.40003.75000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx1 16.4000
test t1 idx1 21.6875
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx3 18.5000
test t1 idx4 16.2000
test t1 idx4 21.6875
test t1 idx4 31.1304
test t3 PRIMARY 11.0000
test t3 idx 13.7500
DROP TABLE t3;
SELECT * FROM mysql.table_stats;
db_name table_name cardinality
test t1 40
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx1 16.4000
test t1 idx1 21.6875
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx3 18.5000
test t1 idx4 16.2000
test t1 idx4 21.6875
test t1 idx4 31.1304
CREATE TEMPORARY TABLE t0 (
a int NOT NULL PRIMARY KEY,
b varchar(32)
);
INSERT INTO t0 SELECT a,b FROM t1;
ALTER TABLE t1 CHANGE COLUMN b x varchar(32),
CHANGE COLUMN e y double;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
`x` varchar(32) DEFAULT NULL,
`c` char(16) DEFAULT NULL,
`d` date DEFAULT NULL,
`y` double DEFAULT NULL,
`f` bit(3) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `idx1` (`x`,`y`),
KEY `idx2` (`c`,`d`),
KEY `idx3` (`d`),
KEY `idx4` (`y`,`x`,`d`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
test t1 x vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
test t1 y 0.010.1120.22508.00006.20000 NULL NULL
ALTER TABLE t1 CHANGE COLUMN x b varchar(32),
CHANGE COLUMN y e double;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
`b` varchar(32) DEFAULT NULL,
`c` char(16) DEFAULT NULL,
`d` date DEFAULT NULL,
`e` double DEFAULT NULL,
`f` bit(3) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `idx1` (`b`,`e`),
KEY `idx2` (`c`,`d`),
KEY `idx3` (`d`),
KEY `idx4` (`e`,`b`,`d`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
ALTER TABLE t1 RENAME TO s1, CHANGE COLUMN b x varchar(32);
SHOW CREATE TABLE s1;
Table Create Table
s1 CREATE TABLE `s1` (
`a` int(11) NOT NULL,
`x` varchar(32) DEFAULT NULL,
`c` char(16) DEFAULT NULL,
`d` date DEFAULT NULL,
`e` double DEFAULT NULL,
`f` bit(3) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `idx1` (`x`,`e`),
KEY `idx2` (`c`,`d`),
KEY `idx3` (`d`),
KEY `idx4` (`e`,`x`,`d`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
SELECT * FROM mysql.table_stats;
db_name table_name cardinality
test s1 40
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test s1 a 0490.00004.00001.0000 NULL NULL NULL
test s1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test s1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test s1 e 0.010.1120.22508.00006.20000 NULL NULL
test s1 f 150.20001.00006.40000 NULL NULL
test s1 x vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test s1 PRIMARY 11.0000
test s1 idx1 16.4000
test s1 idx1 21.6875
test s1 idx2 17.0000
test s1 idx2 22.3846
test s1 idx3 18.5000
test s1 idx4 16.2000
test s1 idx4 21.6875
test s1 idx4 31.1304
ALTER TABLE s1 RENAME TO t1, CHANGE COLUMN x b varchar(32);
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
`b` varchar(32) DEFAULT NULL,
`c` char(16) DEFAULT NULL,
`d` date DEFAULT NULL,
`e` double DEFAULT NULL,
`f` bit(3) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `idx1` (`b`,`e`),
KEY `idx2` (`c`,`d`),
KEY `idx3` (`d`),
KEY `idx4` (`e`,`b`,`d`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
SELECT * FROM mysql.table_stats;
db_name table_name cardinality
test t1 40
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx1 16.4000
test t1 idx1 21.6875
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx3 18.5000
test t1 idx4 16.2000
test t1 idx4 21.6875
test t1 idx4 31.1304
ALTER TABLE t1 CHANGE COLUMN b x varchar(30);
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
`x` varchar(30) DEFAULT NULL,
`c` char(16) DEFAULT NULL,
`d` date DEFAULT NULL,
`e` double DEFAULT NULL,
`f` bit(3) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `idx1` (`x`,`e`),
KEY `idx2` (`c`,`d`),
KEY `idx3` (`d`),
KEY `idx4` (`e`,`x`,`d`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx3 18.5000
ANALYZE TABLE t1 PERSISTENT FOR COLUMNS(x) INDEXES();
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
SELECT * FROM mysql.column_stats where column_name="x";
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 x vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
ALTER TABLE t1 CHANGE COLUMN x b varchar(32);
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
`b` varchar(32) DEFAULT NULL,
`c` char(16) DEFAULT NULL,
`d` date DEFAULT NULL,
`e` double DEFAULT NULL,
`f` bit(3) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `idx1` (`b`,`e`),
KEY `idx2` (`c`,`d`),
KEY `idx3` (`d`),
KEY `idx4` (`e`,`b`,`d`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx3 18.5000
ANALYZE TABLE t1 PERSISTENT FOR COLUMNS(b) INDEXES(idx1, idx4);
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx1 16.4000
test t1 idx1 21.6875
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx3 18.5000
test t1 idx4 16.2000
test t1 idx4 21.6875
test t1 idx4 31.1304
SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/save_column_stats'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
FROM mysql.column_stats WHERE column_name='b';
SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/save_index_stats'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
FROM mysql.index_stats WHERE index_name IN ('idx1', 'idx4');
ALTER TABLE t1 CHANGE COLUMN b x varchar(30);
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
`x` varchar(30) DEFAULT NULL,
`c` char(16) DEFAULT NULL,
`d` date DEFAULT NULL,
`e` double DEFAULT NULL,
`f` bit(3) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `idx1` (`x`,`e`),
KEY `idx2` (`c`,`d`),
KEY `idx3` (`d`),
KEY `idx4` (`e`,`x`,`d`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx3 18.5000
ALTER TABLE t1 CHANGE COLUMN x b varchar(32);
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
`b` varchar(32) DEFAULT NULL,
`c` char(16) DEFAULT NULL,
`d` date DEFAULT NULL,
`e` double DEFAULT NULL,
`f` bit(3) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `idx1` (`b`,`e`),
KEY `idx2` (`c`,`d`),
KEY `idx3` (`d`),
KEY `idx4` (`e`,`b`,`d`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx3 18.5000
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/save_column_stats' IGNORE
INTO TABLE mysql.column_stats
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/save_index_stats'
INTO TABLE mysql.index_stats
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx1 16.4000
test t1 idx1 21.6875
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx3 18.5000
test t1 idx4 16.2000
test t1 idx4 21.6875
test t1 idx4 31.1304
ALTER TABLE t1 DROP COLUMN b;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
`c` char(16) DEFAULT NULL,
`d` date DEFAULT NULL,
`e` double DEFAULT NULL,
`f` bit(3) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `idx1` (`e`),
KEY `idx2` (`c`,`d`),
KEY `idx3` (`d`),
KEY `idx4` (`e`,`d`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx3 18.5000
DROP INDEX idx2 ON t1;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
`c` char(16) DEFAULT NULL,
`d` date DEFAULT NULL,
`e` double DEFAULT NULL,
`f` bit(3) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `idx1` (`e`),
KEY `idx3` (`d`),
KEY `idx4` (`e`,`d`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx3 18.5000
DROP INDEX idx1 ON t1;
DROP INDEX idx4 ON t1;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
`c` char(16) DEFAULT NULL,
`d` date DEFAULT NULL,
`e` double DEFAULT NULL,
`f` bit(3) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `idx3` (`d`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD COLUMN b varchar(32);
CREATE INDEX idx1 ON t1(b, e);
CREATE INDEX idx2 ON t1(c, d);
CREATE INDEX idx4 ON t1(e, b, d);
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
`c` char(16) DEFAULT NULL,
`d` date DEFAULT NULL,
`e` double DEFAULT NULL,
`f` bit(3) DEFAULT NULL,
`b` varchar(32) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `idx3` (`d`),
KEY `idx1` (`b`,`e`),
KEY `idx2` (`c`,`d`),
KEY `idx4` (`e`,`b`,`d`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx3 18.5000
ANALYZE TABLE t1 PERSISTENT FOR COLUMNS(b) INDEXES(idx1, idx2, idx4);
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 b NULL NULL 1.0000 NULL NULL 0 NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx1 1 NULL
test t1 idx1 2 NULL
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx3 18.5000
test t1 idx4 16.2000
test t1 idx4 2 NULL
test t1 idx4 3 NULL
UPDATE t1 SET b=(SELECT b FROM t0 WHERE t0.a= t1.a);
ANALYZE TABLE t1 PERSISTENT FOR COLUMNS(b) INDEXES(idx1, idx2, idx4);
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx1 16.4000
test t1 idx1 21.6875
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx3 18.5000
test t1 idx4 16.2000
test t1 idx4 21.6875
test t1 idx4 31.1304
ALTER TABLE t1 DROP COLUMN b,
DROP INDEX idx1, DROP INDEX idx2, DROP INDEX idx4;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
`c` char(16) DEFAULT NULL,
`d` date DEFAULT NULL,
`e` double DEFAULT NULL,
`f` bit(3) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `idx3` (`d`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx3 18.5000
ALTER TABLE t1 ADD COLUMN b varchar(32);
ALTER TABLE t1
ADD INDEX idx1 (b, e), ADD INDEX idx2 (c, d), ADD INDEX idx4 (e, b, d);
UPDATE t1 SET b=(SELECT b FROM t0 WHERE t0.a= t1.a);
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
`c` char(16) DEFAULT NULL,
`d` date DEFAULT NULL,
`e` double DEFAULT NULL,
`f` bit(3) DEFAULT NULL,
`b` varchar(32) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `idx3` (`d`),
KEY `idx1` (`b`,`e`),
KEY `idx2` (`c`,`d`),
KEY `idx4` (`e`,`b`,`d`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx3 18.5000
ANALYZE TABLE t1 PERSISTENT FOR COLUMNS(b) INDEXES(idx1, idx2, idx4);
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx1 16.4000
test t1 idx1 21.6875
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx3 18.5000
test t1 idx4 16.2000
test t1 idx4 21.6875
test t1 idx4 31.1304
DELETE FROM mysql.table_stats;
DELETE FROM mysql.column_stats;
DELETE FROM mysql.index_stats;
ANALYZE TABLE t1 PERSISTENT FOR COLUMNS() INDEXES();
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status Table is already up to date
SELECT * FROM mysql.table_stats;
db_name table_name cardinality
test t1 40
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
ANALYZE TABLE t1 PERSISTENT FOR COLUMNS(c,e,b) INDEXES(idx2,idx4);
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status Table is already up to date
SELECT * FROM mysql.table_stats;
db_name table_name cardinality
test t1 40
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx4 16.2000
test t1 idx4 21.6875
test t1 idx4 31.1304
DELETE FROM mysql.index_stats WHERE table_name='t1'AND index_name='primary';
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx4 16.2000
test t1 idx4 21.6875
test t1 idx4 31.1304
ANALYZE TABLE t1 PERSISTENT FOR COLUMNS() INDEXES(primary);
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status Table is already up to date
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx4 16.2000
test t1 idx4 21.6875
test t1 idx4 31.1304
DELETE FROM mysql.table_stats;
DELETE FROM mysql.column_stats;
DELETE FROM mysql.index_stats;
ANALYZE TABLE t1 PERSISTENT FOR COLUMNS ALL INDEXES ALL;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status Table is already up to date
SELECT * FROM mysql.table_stats;
db_name table_name cardinality
test t1 40
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx1 16.4000
test t1 idx1 21.6875
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx3 18.5000
test t1 idx4 16.2000
test t1 idx4 21.6875
test t1 idx4 31.1304
CREATE TABLE t2 LIKE t1;
ALTER TABLE t2 ENGINE=InnoDB;
INSERT INTO t2 SELECT * FROM t1; set optimizer_switch='extended_keys=off';
ANALYZE TABLE t2;
Table Op Msg_type Msg_text
test.t2 analyze status Engine-independent statistics collected
test.t2 analyze status OK
SELECT * FROM mysql.table_stats;
db_name table_name cardinality
test t1 40
test t2 40
SELECT * FROM mysql.column_stats ORDER BY column_name, table_name;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t2 a 0490.00004.00001.0000 NULL NULL NULL
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
test t2 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t2 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t2 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t2 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
test t2 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats ORDER BY index_name, prefix_arity, table_name;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t2 PRIMARY 11.0000
test t1 idx1 16.4000
test t2 idx1 16.4000
test t1 idx1 21.6875
test t2 idx1 21.6875
test t1 idx2 17.0000
test t2 idx2 17.0000
test t1 idx2 22.3846
test t2 idx2 22.3846
test t1 idx3 18.5000
test t2 idx3 18.5000
test t1 idx4 16.2000
test t2 idx4 16.2000
test t1 idx4 21.6875
test t2 idx4 21.6875
test t1 idx4 31.1304
test t2 idx4 31.1304
DELETE FROM mysql.table_stats;
DELETE FROM mysql.column_stats;
DELETE FROM mysql.index_stats; set optimizer_switch='extended_keys=on';
ANALYZE TABLE t2;
Table Op Msg_type Msg_text
test.t2 analyze status Engine-independent statistics collected
test.t2 analyze status OK
SELECT * FROM mysql.table_stats;
db_name table_name cardinality
test t2 40
SELECT * FROM mysql.column_stats ORDER BY column_name;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t2 a 0490.00004.00001.0000 NULL NULL NULL
test t2 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
test t2 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t2 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t2 e 0.010.1120.22508.00006.20000 NULL NULL
test t2 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats ORDER BY index_name, prefix_arity, table_name;
db_name table_name index_name prefix_arity avg_frequency
test t2 PRIMARY 11.0000
test t2 idx1 16.4000
test t2 idx1 21.6875
test t2 idx1 31.0000
test t2 idx2 17.0000
test t2 idx2 22.3846
test t2 idx2 31.0000
test t2 idx3 18.5000
test t2 idx3 21.0000
test t2 idx4 16.2000
test t2 idx4 21.6875
test t2 idx4 31.1304
test t2 idx4 41.0000
ALTER TABLE t2 DROP PRIMARY KEY, DROP INDEX idx1;
SELECT * FROM mysql.index_stats ORDER BY index_name, prefix_arity, table_name;
db_name table_name index_name prefix_arity avg_frequency
test t2 idx2 17.0000
test t2 idx2 22.3846
test t2 idx3 18.5000
test t2 idx4 16.2000
test t2 idx4 21.6875
test t2 idx4 31.1304
UPDATE t2 SET b=0 WHERE b IS NULL;
ALTER TABLE t2 ADD PRIMARY KEY (a,b);
SELECT * FROM mysql.index_stats ORDER BY index_name, prefix_arity, table_name;
db_name table_name index_name prefix_arity avg_frequency
test t2 idx2 17.0000
test t2 idx2 22.3846
test t2 idx3 18.5000
test t2 idx4 16.2000
test t2 idx4 21.6875
test t2 idx4 31.1304
ANALYZE TABLE t2 PERSISTENT FOR COLUMNS() INDEXES ALL;
Table Op Msg_type Msg_text
test.t2 analyze status Engine-independent statistics collected
test.t2 analyze status OK
SELECT * FROM mysql.index_stats ORDER BY index_name, prefix_arity, table_name;
db_name table_name index_name prefix_arity avg_frequency
test t2 PRIMARY 11.0000
test t2 PRIMARY 21.0000
test t2 idx2 17.0000
test t2 idx2 22.3846
test t2 idx2 31.0000
test t2 idx2 41.0000
test t2 idx3 18.5000
test t2 idx3 21.0000
test t2 idx3 31.0000
test t2 idx4 16.2000
test t2 idx4 21.7222
test t2 idx4 31.1154
test t2 idx4 41.0000
SELECT * FROM mysql.column_stats where column_name="b";
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t2 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.200017.12506.40000 NULL NULL
ALTER TABLE t2 CHANGE COLUMN b b varchar(30);
SELECT * FROM mysql.index_stats ORDER BY index_name, prefix_arity, table_name;
db_name table_name index_name prefix_arity avg_frequency
test t2 idx2 17.0000
test t2 idx2 22.3846
test t2 idx3 18.5000
SELECT * FROM mysql.column_stats where column_name="b";
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
ANALYZE TABLE t2 PERSISTENT FOR COLUMNS ALL INDEXES ALL;
Table Op Msg_type Msg_text
test.t2 analyze status Engine-independent statistics collected
test.t2 analyze status OK
SELECT * FROM mysql.index_stats ORDER BY index_name, prefix_arity, table_name;
db_name table_name index_name prefix_arity avg_frequency
test t2 PRIMARY 11.0000
test t2 PRIMARY 21.0000
test t2 idx2 17.0000
test t2 idx2 22.3846
test t2 idx2 31.0000
test t2 idx2 41.0000
test t2 idx3 18.5000
test t2 idx3 21.0000
test t2 idx3 31.0000
test t2 idx4 16.2000
test t2 idx4 21.7222
test t2 idx4 31.1154
test t2 idx4 41.0000
ALTER TABLE t2 CHANGE COLUMN b b varchar(32);
SELECT * FROM mysql.index_stats ORDER BY index_name, prefix_arity, table_name;
db_name table_name index_name prefix_arity avg_frequency
test t2 PRIMARY 11.0000
test t2 PRIMARY 21.0000
test t2 idx2 17.0000
test t2 idx2 22.3846
test t2 idx2 31.0000
test t2 idx2 41.0000
test t2 idx3 18.5000
test t2 idx3 21.0000
test t2 idx3 31.0000
test t2 idx4 16.2000
test t2 idx4 21.7222
test t2 idx4 31.1154
test t2 idx4 41.0000
SELECT * FROM mysql.column_stats where column_name="b";
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t2 b 0 zzzzzzzzzzzzzzzzzz 0.000013.90006.66670 NULL NULL
ANALYZE TABLE t2 PERSISTENT FOR COLUMNS ALL INDEXES ALL;
Table Op Msg_type Msg_text
test.t2 analyze status Engine-independent statistics collected
test.t2 analyze status OK
SELECT * FROM mysql.index_stats ORDER BY index_name, prefix_arity, table_name;
db_name table_name index_name prefix_arity avg_frequency
test t2 PRIMARY 11.0000
test t2 PRIMARY 21.0000
test t2 idx2 17.0000
test t2 idx2 22.3846
test t2 idx2 31.0000
test t2 idx2 41.0000
test t2 idx3 18.5000
test t2 idx3 21.0000
test t2 idx3 31.0000
test t2 idx4 16.2000
test t2 idx4 21.7222
test t2 idx4 31.1154
test t2 idx4 41.0000
ALTER TABLE t2 DROP COLUMN b, DROP PRIMARY KEY, ADD PRIMARY KEY(a);
SELECT * FROM mysql.index_stats ORDER BY index_name, prefix_arity, table_name;
db_name table_name index_name prefix_arity avg_frequency
test t2 idx2 17.0000
test t2 idx2 22.3846
test t2 idx3 18.5000
ANALYZE TABLE t2 PERSISTENT FOR COLUMNS() INDEXES ALL;
Table Op Msg_type Msg_text
test.t2 analyze status Engine-independent statistics collected
test.t2 analyze status OK
SELECT * FROM mysql.index_stats ORDER BY index_name, prefix_arity, table_name;
db_name table_name index_name prefix_arity avg_frequency
test t2 PRIMARY 11.0000
test t2 idx2 17.0000
test t2 idx2 22.3846
test t2 idx2 31.0000
test t2 idx3 18.5000
test t2 idx3 21.0000
test t2 idx4 16.2000
test t2 idx4 22.2308
test t2 idx4 31.0000 set optimizer_switch='extended_keys=off';
ALTER TABLE t1
DROP INDEX idx1,
DROP INDEX idx4;
ALTER TABLE t1
MODIFY COLUMN b text,
ADD INDEX idx1 (b(4), e),
ADD INDEX idx4 (e, b(4), d);
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t2 a 0490.00004.00001.00000 NULL NULL
test t2 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t2 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t2 e 0.010.1120.22508.00006.20000 NULL NULL
test t2 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t2 PRIMARY 11.0000
test t2 idx2 17.0000
test t2 idx2 22.3846
test t2 idx2 31.0000
test t2 idx3 18.5000
test t2 idx3 21.0000
test t2 idx4 16.2000
test t2 idx4 22.2308
test t2 idx4 31.0000
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze Warning Engine-independent statistics are not collected for column 'b'
test.t1 analyze status OK
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
test t2 a 0490.00004.00001.00000 NULL NULL
test t2 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t2 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t2 e 0.010.1120.22508.00006.20000 NULL NULL
test t2 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx1 1 NULL
test t1 idx1 2 NULL
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx3 18.5000
test t1 idx4 16.2000
test t1 idx4 2 NULL
test t1 idx4 3 NULL
test t2 PRIMARY 11.0000
test t2 idx2 17.0000
test t2 idx2 22.3846
test t2 idx2 31.0000
test t2 idx3 18.5000
test t2 idx3 21.0000
test t2 idx4 16.2000
test t2 idx4 22.2308
test t2 idx4 31.0000
DELETE FROM mysql.table_stats;
DELETE FROM mysql.column_stats;
DELETE FROM mysql.index_stats;
ANALYZE TABLE mysql.column_stats PERSISTENT FOR ALL;
Table Op Msg_type Msg_text
mysql.column_stats analyze error Invalid argument
ANALYZE TABLE mysql.column_stats;
Table Op Msg_type Msg_text
mysql.column_stats analyze status Table is already up to date
SELECT * FROM mysql.table_stats;
db_name table_name cardinality
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency set use_stat_tables='never';
ANALYZE TABLE t1 PERSISTENT FOR ALL;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze Warning Engine-independent statistics are not collected for column 'b'
test.t1 analyze status Table is already up to date
SELECT * FROM mysql.table_stats;
db_name table_name cardinality
test t1 40
SELECT * FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0490.00004.00001.0000 NULL NULL NULL
test t1 c aaaa dddddddd 0.12506.65717.00000 NULL NULL
test t1 d 1989-03-121999-07-230.15003.00008.50000 NULL NULL
test t1 e 0.010.1120.22508.00006.20000 NULL NULL
test t1 f 150.20001.00006.40000 NULL NULL
SELECT * FROM mysql.index_stats;
db_name table_name index_name prefix_arity avg_frequency
test t1 PRIMARY 11.0000
test t1 idx1 1 NULL
test t1 idx1 2 NULL
test t1 idx2 17.0000
test t1 idx2 22.3846
test t1 idx3 18.5000
test t1 idx4 16.2000
test t1 idx4 2 NULL
test t1 idx4 3 NULL
DELETE FROM mysql.table_stats;
DELETE FROM mysql.column_stats;
DELETE FROM mysql.index_stats;
ANALYZE TABLE t1 PERSISTENT FOR COLUMNS(b) INDEXES();
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze Warning Engine-independent statistics are not collected for column 'b'
test.t1 analyze status Table is already up to date
ANALYZE TABLE t1 PERSISTENT FOR columns(a,b) INDEXES();
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze Warning Engine-independent statistics are not collected for column 'b'
test.t1 analyze status Table is already up to date
ANALYZE TABLE t1 PERSISTENT FOR columns(b) indexes(idx2);
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze Warning Engine-independent statistics are not collected for column 'b'
test.t1 analyze status Table is already up to date
ANALYZE TABLE t1 PERSISTENT FOR columns() indexes(idx2);
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status Table is already up to date
DELETE FROM mysql.table_stats;
DELETE FROM mysql.column_stats;
DELETE FROM mysql.index_stats;
DROP TABLE t1,t2; set names utf8;
CREATE DATABASE world;
use world;
CREATE TABLE Country (
Code char(3) NOT NULL default '',
Name char(52) NOT NULL default '',
SurfaceArea float(10,2) NOT NULL default '0.00',
Population int(11) NOT NULL default '0',
Capital int(11) default NULL,
PRIMARY KEY (Code),
UNIQUE INDEX (Name)
) CHARACTER SET utf8 COLLATE utf8_bin;
CREATE TABLE City (
ID int(11) NOT NULL auto_increment,
Name char(35) NOT NULL default '',
Country char(3) NOT NULL default '',
Population int(11) NOT NULL default '0',
PRIMARY KEY (ID),
INDEX (Population),
INDEX (Country)
) CHARACTER SET utf8 COLLATE utf8_bin;
CREATE TABLE CountryLanguage (
Country char(3) NOT NULL default '',
Language char(30) NOT NULL default '',
Percentage float(3,1) NOT NULL default '0.0',
PRIMARY KEY (Country, Language),
INDEX (Percentage)
) CHARACTER SET utf8 COLLATE utf8_bin; set use_stat_tables='preferably';
ANALYZE TABLE Country, City, CountryLanguage;
SELECT UPPER(db_name), UPPER(table_name), cardinality
FROM mysql.table_stats;
UPPER(db_name) UPPER(table_name) cardinality
WORLD CITY 4079
WORLD COUNTRY 239
WORLD COUNTRYLANGUAGE 984
SELECT UPPER(db_name), UPPER(table_name),
column_name, min_value, max_value, nulls_ratio, avg_length, avg_frequency
FROM mysql.column_stats;
UPPER(db_name) UPPER(table_name) column_name min_value max_value nulls_ratio avg_length avg_frequency
WORLD CITY Country ABW ZWE 0.00003.000017.5819
WORLD CITY ID 140790.00004.00001.0000
WORLD CITY Name A Coruña (La Coruña) Ürgenc 0.00008.64161.0195
WORLD CITY Population 42105000000.00004.00001.0467
WORLD COUNTRY Capital 140740.02934.00001.0000
WORLD COUNTRY Code ABW ZWE 0.00003.00001.0000
WORLD COUNTRY Name Afghanistan Zimbabwe 0.000010.11721.0000
WORLD COUNTRY Population 012775580000.00004.00001.0575
WORLD COUNTRY SurfaceArea 0.4017075400.000.00004.00001.0042
WORLD COUNTRYLANGUAGE Country ABW ZWE 0.00003.00004.2232
WORLD COUNTRYLANGUAGE Language Abhyasi [South]Mande 0.00007.17782.1532
WORLD COUNTRYLANGUAGE Percentage 0.099.90.00004.00002.7640
SELECT UPPER(db_name), UPPER(table_name),
index_name, prefix_arity, avg_frequency
FROM mysql.index_stats;
UPPER(db_name) UPPER(table_name) index_name prefix_arity avg_frequency
WORLD CITY Country 117.5819
WORLD CITY PRIMARY 11.0000
WORLD CITY Population 11.0467
WORLD COUNTRY Name 11.0000
WORLD COUNTRY PRIMARY 11.0000
WORLD COUNTRYLANGUAGE PRIMARY 14.2232
WORLD COUNTRYLANGUAGE PRIMARY 21.0000
WORLD COUNTRYLANGUAGE Percentage 12.7640
use test; set use_stat_tables='never';
CREATE DATABASE world_innodb;
use world_innodb;
CREATE TABLE Country (
Code char(3) NOT NULL default '',
Name char(52) NOT NULL default '',
SurfaceArea float(10,2) NOT NULL default '0.00',
Population int(11) NOT NULL default '0',
Capital int(11) default NULL,
PRIMARY KEY (Code),
UNIQUE INDEX (Name)
) CHARACTER SET utf8 COLLATE utf8_bin;
CREATE TABLE City (
ID int(11) NOT NULL auto_increment,
Name char(35) NOT NULL default '',
Country char(3) NOT NULL default '',
Population int(11) NOT NULL default '0',
PRIMARY KEY (ID),
INDEX (Population),
INDEX (Country)
) CHARACTER SET utf8 COLLATE utf8_bin;
CREATE TABLE CountryLanguage (
Country char(3) NOT NULL default '',
Language char(30) NOT NULL default '',
Percentage float(3,1) NOT NULL default '0.0',
PRIMARY KEY (Country, Language),
INDEX (Percentage)
) CHARACTER SET utf8 COLLATE utf8_bin;
ALTER TABLE Country ENGINE=InnoDB;
ALTER TABLE City ENGINE=InnoDB;
ALTER TABLE CountryLanguage ENGINE=InnoDB; set use_stat_tables='preferably';
ANALYZE TABLE Country, City, CountryLanguage;
SELECT UPPER(db_name), UPPER(table_name), cardinality
FROM mysql.table_stats;
UPPER(db_name) UPPER(table_name) cardinality
WORLD CITY 4079
WORLD COUNTRY 239
WORLD COUNTRYLANGUAGE 984
WORLD_INNODB CITY 4079
WORLD_INNODB COUNTRY 239
WORLD_INNODB COUNTRYLANGUAGE 984
SELECT UPPER(db_name), UPPER(table_name),
column_name, min_value, max_value, nulls_ratio, avg_length, avg_frequency
FROM mysql.column_stats;
UPPER(db_name) UPPER(table_name) column_name min_value max_value nulls_ratio avg_length avg_frequency
WORLD CITY Country ABW ZWE 0.00003.000017.5819
WORLD CITY ID 140790.00004.00001.0000
WORLD CITY Name A Coruña (La Coruña) Ürgenc 0.00008.64161.0195
WORLD CITY Population 42105000000.00004.00001.0467
WORLD COUNTRY Capital 140740.02934.00001.0000
WORLD COUNTRY Code ABW ZWE 0.00003.00001.0000
WORLD COUNTRY Name Afghanistan Zimbabwe 0.000010.11721.0000
WORLD COUNTRY Population 012775580000.00004.00001.0575
WORLD COUNTRY SurfaceArea 0.4017075400.000.00004.00001.0042
WORLD COUNTRYLANGUAGE Country ABW ZWE 0.00003.00004.2232
WORLD COUNTRYLANGUAGE Language Abhyasi [South]Mande 0.00007.17782.1532
WORLD COUNTRYLANGUAGE Percentage 0.099.90.00004.00002.7640
WORLD_INNODB CITY Country ABW ZWE 0.00003.000017.5819
WORLD_INNODB CITY ID 140790.00004.00001.0000
WORLD_INNODB CITY Name A Coruña (La Coruña) Ürgenc 0.00008.64161.0195
WORLD_INNODB CITY Population 42105000000.00004.00001.0467
WORLD_INNODB COUNTRY Capital 140740.02934.00001.0000
WORLD_INNODB COUNTRY Code ABW ZWE 0.00003.00001.0000
WORLD_INNODB COUNTRY Name Afghanistan Zimbabwe 0.000010.11721.0000
WORLD_INNODB COUNTRY Population 012775580000.00004.00001.0575
WORLD_INNODB COUNTRY SurfaceArea 0.4017075400.000.00004.00001.0042
WORLD_INNODB COUNTRYLANGUAGE Country ABW ZWE 0.00003.00004.2232
WORLD_INNODB COUNTRYLANGUAGE Language Abhyasi [South]Mande 0.00007.17782.1532
WORLD_INNODB COUNTRYLANGUAGE Percentage 0.099.90.00004.00002.7640
SELECT UPPER(db_name), UPPER(table_name),
index_name, prefix_arity, avg_frequency
FROM mysql.index_stats;
UPPER(db_name) UPPER(table_name) index_name prefix_arity avg_frequency
WORLD CITY Country 117.5819
WORLD CITY PRIMARY 11.0000
WORLD CITY Population 11.0467
WORLD COUNTRY Name 11.0000
WORLD COUNTRY PRIMARY 11.0000
WORLD COUNTRYLANGUAGE PRIMARY 14.2232
WORLD COUNTRYLANGUAGE PRIMARY 21.0000
WORLD COUNTRYLANGUAGE Percentage 12.7640
WORLD_INNODB CITY Country 117.5819
WORLD_INNODB CITY PRIMARY 11.0000
WORLD_INNODB CITY Population 11.0467
WORLD_INNODB COUNTRY Name 11.0000
WORLD_INNODB COUNTRY PRIMARY 11.0000
WORLD_INNODB COUNTRYLANGUAGE PRIMARY 14.2232
WORLD_INNODB COUNTRYLANGUAGE PRIMARY 21.0000
WORLD_INNODB COUNTRYLANGUAGE Percentage 12.7640
use world; set use_stat_tables='preferably'; set histogram_size=100; set histogram_type=@SINGLE_PREC_TYPE;
ANALYZE TABLE CountryLanguage; set histogram_size=254; set histogram_type=@DOUBLE_PREC_TYPE;
ANALYZE TABLE City;
FLUSH TABLES;
select UPPER(db_name),UPPER(table_name),UPPER(column_name),min_value,max_value,nulls_ratio,avg_length,avg_frequency,hist_size,hist_type,decode_histogram(hist_type,histogram) from mysql.column_stats where UPPER(db_name)='WORLD'and UPPER(table_name)='COUNTRYLANGUAGE'and UPPER(column_name) = 'PERCENTAGE';;
UPPER(db_name) WORLD
UPPER(table_name) COUNTRYLANGUAGE
UPPER(column_name) PERCENTAGE
min_value 0.0
max_value 99.9
nulls_ratio 0.0000
avg_length 4.0000
avg_frequency 2.7640
hist_size 100
hist_type SINGLE_PREC_HB
decode_histogram(hist_type,histogram) 0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.004,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.004,0.000,0.000,0.004,0.000,0.000,0.000,0.004,0.000,0.000,0.000,0.004,0.000,0.000,0.000,0.004,0.000,0.004,0.000,0.000,0.004,0.000,0.004,0.000,0.004,0.000,0.004,0.004,0.004,0.000,0.004,0.000,0.004,0.004,0.004,0.004,0.004,0.000,0.004,0.004,0.004,0.004,0.004,0.004,0.008,0.004,0.008,0.008,0.008,0.008,0.020,0.004,0.016,0.020,0.016,0.016,0.051,0.031,0.027,0.031,0.043,0.047,0.043,0.043,0.055,0.051,0.071,0.043,0.043,0.043,0.020,0.024,0.024,0.020,0.016,0.016,0.008,0.008,0.012,0.000
select UPPER(db_name),UPPER(table_name),UPPER(column_name),min_value,max_value,nulls_ratio,avg_length,avg_frequency,hist_size,hist_type,decode_histogram(hist_type,histogram) from mysql.column_stats where UPPER(db_name)='WORLD'and UPPER(table_name)='CITY'and UPPER(column_name) = 'POPULATION';;
UPPER(db_name) WORLD
UPPER(table_name) CITY
UPPER(column_name) POPULATION
min_value 42
max_value 10500000
nulls_ratio 0.0000
avg_length 4.0000
avg_frequency 1.0467
hist_size 254
hist_type DOUBLE_PREC_HB
decode_histogram(hist_type,histogram) 0.00047,0.00198,0.00601,0.00008,0.00008,0.00005,0.00011,0.00006,0.00009,0.00008,0.00006,0.00009,0.00008,0.00009,0.00008,0.00009,0.00006,0.00006,0.00008,0.00008,0.00008,0.00011,0.00009,0.00008,0.00009,0.00006,0.00011,0.00006,0.00012,0.00012,0.00012,0.00012,0.00011,0.00011,0.00014,0.00011,0.00011,0.00011,0.00014,0.00006,0.00011,0.00009,0.00011,0.00009,0.00015,0.00015,0.00015,0.00009,0.00018,0.00015,0.00015,0.00015,0.00017,0.00018,0.00018,0.00015,0.00018,0.00020,0.00024,0.00021,0.00023,0.00027,0.00024,0.00024,0.00027,0.00023,0.00020,0.00029,0.00020,0.00027,0.00020,0.00027,0.00026,0.00034,0.00024,0.00034,0.00031,0.00037,0.00043,0.00038,0.00038,0.00035,0.00047,0.00056,0.00058,0.00041,0.00047,0.00056,0.00072,0.00044,0.00060,0.00072,0.00061,0.00072,0.00066,0.00085,0.00075,0.00078,0.00082,0.00073,0.00108,0.00089,0.00105,0.00105,0.00151,0.00150,0.00110,0.00145,0.00163,0.00160,0.00165,0.00232,0.00201,0.00371,0.00365,0.00383,0.00459,0.00583,0.00662,0.00984,0.00969,0.01080,0.01379,0.02063,0.04308,0.05960,0.15816,0.59464 set histogram_type=@SINGLE_PREC_TYPE; set histogram_size=0;
use test;
DROP DATABASE world;
SELECT UPPER(db_name), UPPER(table_name), cardinality
FROM mysql.table_stats;
UPPER(db_name) UPPER(table_name) cardinality
WORLD_INNODB CITY 4079
WORLD_INNODB COUNTRY 239
WORLD_INNODB COUNTRYLANGUAGE 984
SELECT UPPER(db_name), UPPER(table_name),
column_name, min_value, max_value, nulls_ratio, avg_length, avg_frequency
FROM mysql.column_stats;
UPPER(db_name) UPPER(table_name) column_name min_value max_value nulls_ratio avg_length avg_frequency
WORLD_INNODB CITY Country ABW ZWE 0.00003.000017.5819
WORLD_INNODB CITY ID 140790.00004.00001.0000
WORLD_INNODB CITY Name A Coruña (La Coruña) Ürgenc 0.00008.64161.0195
WORLD_INNODB CITY Population 42105000000.00004.00001.0467
WORLD_INNODB COUNTRY Capital 140740.02934.00001.0000
WORLD_INNODB COUNTRY Code ABW ZWE 0.00003.00001.0000
WORLD_INNODB COUNTRY Name Afghanistan Zimbabwe 0.000010.11721.0000
WORLD_INNODB COUNTRY Population 012775580000.00004.00001.0575
WORLD_INNODB COUNTRY SurfaceArea 0.4017075400.000.00004.00001.0042
WORLD_INNODB COUNTRYLANGUAGE Country ABW ZWE 0.00003.00004.2232
WORLD_INNODB COUNTRYLANGUAGE Language Abhyasi [South]Mande 0.00007.17782.1532
WORLD_INNODB COUNTRYLANGUAGE Percentage 0.099.90.00004.00002.7640
SELECT UPPER(db_name), UPPER(table_name),
index_name, prefix_arity, avg_frequency
FROM mysql.index_stats;
UPPER(db_name) UPPER(table_name) index_name prefix_arity avg_frequency
WORLD_INNODB CITY Country 117.5819
WORLD_INNODB CITY PRIMARY 11.0000
WORLD_INNODB CITY Population 11.0467
WORLD_INNODB COUNTRY Name 11.0000
WORLD_INNODB COUNTRY PRIMARY 11.0000
WORLD_INNODB COUNTRYLANGUAGE PRIMARY 14.2232
WORLD_INNODB COUNTRYLANGUAGE PRIMARY 21.0000
WORLD_INNODB COUNTRYLANGUAGE Percentage 12.7640
DROP DATABASE world_innodb;
SELECT UPPER(db_name), UPPER(table_name), cardinality
FROM mysql.table_stats;
UPPER(db_name) UPPER(table_name) cardinality
SELECT UPPER(db_name), UPPER(table_name),
column_name, min_value, max_value, nulls_ratio, avg_length, avg_frequency
FROM mysql.column_stats;
UPPER(db_name) UPPER(table_name) column_name min_value max_value nulls_ratio avg_length avg_frequency
SELECT UPPER(db_name), UPPER(table_name),
index_name, prefix_arity, avg_frequency
FROM mysql.index_stats;
UPPER(db_name) UPPER(table_name) index_name prefix_arity avg_frequency
DELETE FROM mysql.table_stats;
DELETE FROM mysql.column_stats;
DELETE FROM mysql.index_stats;
#
# Bug mdev-4357: empty string as a value of the HIST_SIZE column
# from mysql.column_stats
#
create table t1 (a int);
insert into t1 values (1),(2),(3); set histogram_size=10;
analyze table t1 persistent for all;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
select db_name, table_name, column_name,
min_value, max_value,
nulls_ratio, avg_frequency,
hist_size, hist_type, decode_histogram(hist_type,histogram)
FROM mysql.column_stats
ORDER BY db_name, table_name, column_name;
db_name table_name column_name min_value max_value nulls_ratio avg_frequency hist_size hist_type decode_histogram(hist_type,histogram)
test t1 a 130.00001.000010 SINGLE_PREC_HB 0.000,0.000,0.000,0.498,0.000,0.000,0.000,0.502,0.000,0.000,0.000 set histogram_size=default;
drop table t1;
#
# Bug mdev-4359: wrong setting of the HIST_SIZE column
# (see also mdev-4357) from mysql.column_stats
#
create table t1 ( a int);
insert into t1 values (1),(2),(3),(4),(5); set histogram_size=10; set histogram_type=@DOUBLE_PREC_TYPE;
show variables like 'histogram%';
Variable_name Value
histogram_size 10
histogram_type DOUBLE_PREC_HB
analyze table t1 persistent for all;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
select db_name, table_name, column_name,
min_value, max_value,
nulls_ratio, avg_frequency,
hist_size, hist_type, decode_histogram(hist_type,histogram)
FROM mysql.column_stats
ORDER BY db_name, table_name, column_name;
db_name table_name column_name min_value max_value nulls_ratio avg_frequency hist_size hist_type decode_histogram(hist_type,histogram)
test t1 a 150.00001.000010 DOUBLE_PREC_HB 0.00000,0.24999,0.25000,0.25000,0.25000,0.00000 set histogram_size=0; set histogram_type=@SINGLE_PREC_TYPE;
drop table t1;
#
# Bug mdev-4369: histogram for a column with many distinct values
#
CREATE TABLE t1 (id int);
CREATE TABLE t2 (id int);
INSERT INTO t1 (id) VALUES (1), (1), (1),(1);
INSERT INTO t1 (id) SELECT id FROM t1;
INSERT INTO t1 SELECT id+1 FROM t1;
INSERT INTO t1 SELECT id+2 FROM t1;
INSERT INTO t1 SELECT id+4 FROM t1;
INSERT INTO t1 SELECT id+8 FROM t1;
INSERT INTO t1 SELECT id+16 FROM t1;
INSERT INTO t1 SELECT id+32 FROM t1;
INSERT INTO t1 SELECT id+64 FROM t1;
INSERT INTO t1 SELECT id+128 FROM t1;
INSERT INTO t1 SELECT id+256 FROM t1;
INSERT INTO t1 SELECT id+512 FROM t1;
INSERT INTO t2 SELECT id FROM t1 ORDER BY id*rand();
SELECT COUNT(*) FROM t2;
COUNT(*) 8192
SELECT COUNT(DISTINCT id) FROM t2;
COUNT(DISTINCT id) 1024 set @@tmp_table_size=1024*16; set @@max_heap_table_size=1024*16; set histogram_size=63;
analyze table t2 persistent for all;
Table Op Msg_type Msg_text
test.t2 analyze status Engine-independent statistics collected
test.t2 analyze status OK
select db_name, table_name, column_name,
min_value, max_value,
nulls_ratio, avg_frequency,
hist_size, hist_type, decode_histogram(hist_type,histogram)
FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_frequency hist_size hist_type decode_histogram(hist_type,histogram)
test t2 id 110240.00008.000063 SINGLE_PREC_HB 0.012,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016 set histogram_size=0;
drop table t1, t2; set use_stat_tables=@save_use_stat_tables;
#
# Bug MDEV-7383: min/max value for a column not utf8 compatible
#
create table t1 (a varchar(100)) engine=MyISAM;
insert into t1 values(unhex('D879626AF872675F73E662F8'));
analyze table t1 persistent for all;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
show warnings;
Level Code Message
select db_name, table_name, column_name,
HEX(min_value), HEX(max_value),
nulls_ratio, avg_frequency,
hist_size, hist_type, decode_histogram(hist_type,histogram)
FROM mysql.column_stats;
db_name table_name column_name HEX(min_value) HEX(max_value) nulls_ratio avg_frequency hist_size hist_type decode_histogram(hist_type,histogram)
test t1 a D879626AF872675F73E662F8 D879626AF872675F73E662F8 0.00001.00000 NULL NULL
drop table t1;
#
# MDEV-9744: session optimizer_use_condition_selectivity=5 causing SQL Error (1918):
# Encountered illegal value '' when converting to DECIMAL
# set @save_optimizer_use_condition_selectivity= @@optimizer_use_condition_selectivity; set optimizer_use_condition_selectivity=3, use_stat_tables=preferably;
create table t1 (id int(10),cost decimal(9,2)) engine=innodb;
ANALYZE TABLE t1 PERSISTENT FOR ALL;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
create temporary table t2 (id int);
insert into t2 (id) select id from t1 where cost > 0;
select * from t2;
id set use_stat_tables=@save_use_stat_tables; set optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
drop table t1,t2;
#
# MDEV-16507: statistics for temporary tables should not be used
# SET
@save_optimizer_use_condition_selectivity= @@optimizer_use_condition_selectivity; SET @@use_stat_tables = preferably ; SET @@optimizer_use_condition_selectivity = 4;
CREATE TABLE t1 (
TIMESTAMP TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP
); SET @had_t1_table= @@warning_count != 0;
CREATE TEMPORARY TABLE tmp_t1 LIKE t1;
INSERT INTO tmp_t1 VALUES (now());
INSERT INTO t1 SELECT * FROM tmp_t1 WHERE @had_t1_table=0;
DROP TABLE t1; SET
use_stat_tables=@save_use_stat_tables; SET
optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
# End of 10.0 tests
#
# MDEV-9590: Always print "Engine-independent statistic" warnings and
# might be filtering columns unintentionally from engines
# set use_stat_tables='NEVER';
create table t1 (test blob);
show variables like 'use_stat_tables';
Variable_name Value
use_stat_tables NEVER
analyze table t1;
Table Op Msg_type Msg_text
test.t1 analyze status Table is already up to date
drop table t1;
#
# MDEV-10435 crash with bad stat tables
# set use_stat_tables='preferably';
call mtr.add_suppression("Column count of mysql.table_stats is wrong. Expected 3, found 1. The table is probably corrupted");
rename table mysql.table_stats to test.table_stats;
flush tables;
create table t1 (a int);
rename table t1 to t2, t3 to t4; ERROR42S02: Table 'test.t3' doesn't exist
drop table t1;
rename table test.table_stats to mysql.table_stats;
rename table mysql.table_stats to test.table_stats;
create table mysql.table_stats (a int);
flush tables;
create table t1 (a int);
rename table t1 to t2, t3 to t4; ERROR42S02: Table 'test.t3' doesn't exist
drop table t1, mysql.table_stats;
rename table test.table_stats to mysql.table_stats;
#
# MDEV-19334: bool is_eits_usable(Field*): Assertion `field->table->stats_is_read' failed.
#
create temporary table t1(a int);
insert into t1 values (1),(2),(3); set use_stat_tables=preferably; set @optimizer_use_condition_selectivity= @@optimizer_use_condition_selectivity; set optimizer_use_condition_selectivity=4;
select * from t1 where a >= 2;
a 2 3
drop table t1; set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity; set use_stat_tables=@save_use_stat_tables;
#
# Start of 10.2 tests
#
#
# MDEV-10134 Add full support for DEFAULT
#
CREATE TABLE t1 (a BLOB, b TEXT DEFAULT DECODE_HISTOGRAM(@SINGLE_PREC_TYPE,a));
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` blob DEFAULT NULL,
`b` text DEFAULT decode_histogram(@`SINGLE_PREC_TYPE`,`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
INSERT INTO t1 (a) VALUES (0x0000000000000000000000000101010101010101010202020303030304040404050505050606070707080809090A0A0B0C0D0D0E0E0F10111213131415161718191B1C1E202224292A2E33373B4850575F6A76818C9AA7B9C4CFDADFE5EBF0F4F8FAFCFF);
SELECT b FROM t1;
b 0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.004,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.004,0.000,0.000,0.004,0.000,0.000,0.000,0.004,0.000,0.000,0.000,0.004,0.000,0.000,0.000,0.004,0.000,0.004,0.000,0.000,0.004,0.000,0.004,0.000,0.004,0.000,0.004,0.004,0.004,0.000,0.004,0.000,0.004,0.004,0.004,0.004,0.004,0.000,0.004,0.004,0.004,0.004,0.004,0.004,0.008,0.004,0.008,0.008,0.008,0.008,0.020,0.004,0.016,0.020,0.016,0.016,0.051,0.031,0.027,0.031,0.043,0.047,0.043,0.043,0.055,0.051,0.071,0.043,0.043,0.043,0.020,0.024,0.024,0.020,0.016,0.016,0.008,0.008,0.012,0.000
DROP TABLE t1;
#
# End of 10.2 tests
# set histogram_size=@save_histogram_size, histogram_type=@save_hist_type;
#
# Start of 10.4 tests
#
#
# Test analyze_sample_percentage system variable.
# set @save_use_stat_tables=@@use_stat_tables; set @save_analyze_sample_percentage=@@analyze_sample_percentage; set session rand_seed1=42; set session rand_seed2=62; set use_stat_tables=PREFERABLY; set histogram_size=10;
CREATE TABLE t1 (id int);
INSERT INTO t1 (id) VALUES (1), (1), (1), (1), (1), (1), (1);
INSERT INTO t1 (id) SELECT id FROM t1;
INSERT INTO t1 SELECT id+1 FROM t1;
INSERT INTO t1 SELECT id+2 FROM t1;
INSERT INTO t1 SELECT id+4 FROM t1;
INSERT INTO t1 SELECT id+8 FROM t1;
INSERT INTO t1 SELECT id+16 FROM t1;
INSERT INTO t1 SELECT id+32 FROM t1;
INSERT INTO t1 SELECT id+64 FROM t1;
INSERT INTO t1 SELECT id+128 FROM t1;
INSERT INTO t1 SELECT id+256 FROM t1;
INSERT INTO t1 SELECT id+512 FROM t1;
INSERT INTO t1 SELECT id+1024 FROM t1;
INSERT INTO t1 SELECT id+2048 FROM t1;
INSERT INTO t1 SELECT id+4096 FROM t1;
INSERT INTO t1 SELECT id+9192 FROM t1;
#
# This query will should show a full table scan analysis.
#
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
select table_name, column_name, min_value, max_value, nulls_ratio, avg_length, avg_frequency,
DECODE_HISTOGRAM(hist_type, histogram)
from mysql.column_stats;
table_name column_name min_value max_value nulls_ratio avg_length avg_frequency DECODE_HISTOGRAM(hist_type, histogram)
t1 id 1173840.00004.000014.00000.15705,0.15711,0.21463,0.15705,0.15711,0.15706 set analyze_sample_percentage=0.1;
#
# This query will show an inaccurate avg_frequency value.
#
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status Table is already up to date
select table_name, column_name, min_value, max_value, nulls_ratio, avg_length, avg_frequency,
DECODE_HISTOGRAM(hist_type, histogram)
from mysql.column_stats;
table_name column_name min_value max_value nulls_ratio avg_length avg_frequency DECODE_HISTOGRAM(hist_type, histogram)
t1 id 111170260.00004.000010.47390.13649,0.14922,0.16921,0.21141,0.18355,0.15012
#
# This query will show a better avg_frequency value.
# set analyze_sample_percentage=25;
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status Table is already up to date
select table_name, column_name, min_value, max_value, nulls_ratio, avg_length, avg_frequency,
DECODE_HISTOGRAM(hist_type, histogram)
from mysql.column_stats;
table_name column_name min_value max_value nulls_ratio avg_length avg_frequency DECODE_HISTOGRAM(hist_type, histogram)
t1 id 1173840.00004.000014.04010.15566,0.15590,0.15729,0.21538,0.15790,0.15787 set analyze_sample_percentage=0;
#
# Test self adjusting sampling level.
#
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status Table is already up to date
select table_name, column_name, min_value, max_value, nulls_ratio, avg_length, avg_frequency,
DECODE_HISTOGRAM(hist_type, histogram)
from mysql.column_stats;
table_name column_name min_value max_value nulls_ratio avg_length avg_frequency DECODE_HISTOGRAM(hist_type, histogram)
t1 id 1173840.00004.000013.98120.15860,0.15767,0.21515,0.15573,0.15630,0.15654
#
# Test record estimation is working properly.
#
select count(*) from t1;
count(*) 229376
explain select * from t1;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 229060 set analyze_sample_percentage=100;
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status Table is already up to date
select table_name, column_name, min_value, max_value, nulls_ratio, avg_length, avg_frequency,
DECODE_HISTOGRAM(hist_type, histogram)
from mysql.column_stats;
table_name column_name min_value max_value nulls_ratio avg_length avg_frequency DECODE_HISTOGRAM(hist_type, histogram)
t1 id 1173840.00004.000014.00000.15705,0.15711,0.21463,0.15705,0.15711,0.15706
explain select * from t1;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 229376
drop table t0;
drop table t1; set analyze_sample_percentage=@save_analyze_sample_percentage; set histogram_size=@save_histogram_size; set use_stat_tables=@save_use_stat_tables; set @@global.histogram_size=@save_histogram_size;
ALTER DATABASE test CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci;
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.30 Sekunden
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.