mirror of
https://github.com/MariaDB/server.git
synced 2025-02-12 00:15:35 +01:00
01c82173dd
The original code was there to favor index search over table scan. This is not needed anymore as the cost calculations for table scans and index lookups are now more exact.
532 lines
12 KiB
Text
532 lines
12 KiB
Text
TRUNCATE TABLE test_innodb_stats;
|
|
SELECT 'dummy INSERT, the table should be empty';
|
|
dummy INSERT, the table should be empty
|
|
dummy INSERT, the table should be empty
|
|
ANALYZE TABLE test_innodb_stats;
|
|
Table Op Msg_type Msg_text
|
|
test.test_innodb_stats analyze status OK
|
|
SELECT
|
|
stat_name,
|
|
stat_value,
|
|
sample_size,
|
|
stat_description
|
|
FROM mysql.innodb_index_stats
|
|
WHERE
|
|
database_name = DATABASE() AND
|
|
table_name = 'test_innodb_stats' AND
|
|
index_name = 'a_key' AND
|
|
stat_name IN ('n_diff_pfx01', 'n_diff_pfx02', 'n_leaf_pages', 'size')
|
|
ORDER BY stat_name;
|
|
stat_name n_diff_pfx01
|
|
stat_value 0
|
|
sample_size 1
|
|
stat_description a
|
|
stat_name n_diff_pfx02
|
|
stat_value 0
|
|
sample_size 1
|
|
stat_description a,DB_ROW_ID
|
|
stat_name n_leaf_pages
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of leaf pages in the index
|
|
stat_name size
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of pages in the index
|
|
FLUSH TABLE test_innodb_stats;
|
|
SELECT * FROM information_schema.statistics
|
|
WHERE table_name = 'test_innodb_stats';
|
|
TABLE_CATALOG def
|
|
TABLE_SCHEMA test
|
|
TABLE_NAME test_innodb_stats
|
|
NON_UNIQUE 1
|
|
INDEX_SCHEMA test
|
|
INDEX_NAME a_key
|
|
SEQ_IN_INDEX 1
|
|
COLUMN_NAME a
|
|
COLLATION A
|
|
CARDINALITY 0
|
|
SUB_PART NULL
|
|
PACKED NULL
|
|
NULLABLE YES
|
|
INDEX_TYPE BTREE
|
|
COMMENT
|
|
INDEX_COMMENT
|
|
IGNORED NO
|
|
TRUNCATE TABLE test_innodb_stats;
|
|
INSERT INTO test_innodb_stats (a) VALUES (1);
|
|
ANALYZE TABLE test_innodb_stats;
|
|
Table Op Msg_type Msg_text
|
|
test.test_innodb_stats analyze status OK
|
|
SELECT
|
|
stat_name,
|
|
stat_value,
|
|
sample_size,
|
|
stat_description
|
|
FROM mysql.innodb_index_stats
|
|
WHERE
|
|
database_name = DATABASE() AND
|
|
table_name = 'test_innodb_stats' AND
|
|
index_name = 'a_key' AND
|
|
stat_name IN ('n_diff_pfx01', 'n_diff_pfx02', 'n_leaf_pages', 'size')
|
|
ORDER BY stat_name;
|
|
stat_name n_diff_pfx01
|
|
stat_value 1
|
|
sample_size 1
|
|
stat_description a
|
|
stat_name n_diff_pfx02
|
|
stat_value 1
|
|
sample_size 1
|
|
stat_description a,DB_ROW_ID
|
|
stat_name n_leaf_pages
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of leaf pages in the index
|
|
stat_name size
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of pages in the index
|
|
FLUSH TABLE test_innodb_stats;
|
|
SELECT * FROM information_schema.statistics
|
|
WHERE table_name = 'test_innodb_stats';
|
|
TABLE_CATALOG def
|
|
TABLE_SCHEMA test
|
|
TABLE_NAME test_innodb_stats
|
|
NON_UNIQUE 1
|
|
INDEX_SCHEMA test
|
|
INDEX_NAME a_key
|
|
SEQ_IN_INDEX 1
|
|
COLUMN_NAME a
|
|
COLLATION A
|
|
CARDINALITY 1
|
|
SUB_PART NULL
|
|
PACKED NULL
|
|
NULLABLE YES
|
|
INDEX_TYPE BTREE
|
|
COMMENT
|
|
INDEX_COMMENT
|
|
IGNORED NO
|
|
TRUNCATE TABLE test_innodb_stats;
|
|
INSERT INTO test_innodb_stats (a) VALUES (1), (1);
|
|
ANALYZE TABLE test_innodb_stats;
|
|
Table Op Msg_type Msg_text
|
|
test.test_innodb_stats analyze status OK
|
|
SELECT
|
|
stat_name,
|
|
stat_value,
|
|
sample_size,
|
|
stat_description
|
|
FROM mysql.innodb_index_stats
|
|
WHERE
|
|
database_name = DATABASE() AND
|
|
table_name = 'test_innodb_stats' AND
|
|
index_name = 'a_key' AND
|
|
stat_name IN ('n_diff_pfx01', 'n_diff_pfx02', 'n_leaf_pages', 'size')
|
|
ORDER BY stat_name;
|
|
stat_name n_diff_pfx01
|
|
stat_value 1
|
|
sample_size 1
|
|
stat_description a
|
|
stat_name n_diff_pfx02
|
|
stat_value 2
|
|
sample_size 1
|
|
stat_description a,DB_ROW_ID
|
|
stat_name n_leaf_pages
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of leaf pages in the index
|
|
stat_name size
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of pages in the index
|
|
FLUSH TABLE test_innodb_stats;
|
|
SELECT * FROM information_schema.statistics
|
|
WHERE table_name = 'test_innodb_stats';
|
|
TABLE_CATALOG def
|
|
TABLE_SCHEMA test
|
|
TABLE_NAME test_innodb_stats
|
|
NON_UNIQUE 1
|
|
INDEX_SCHEMA test
|
|
INDEX_NAME a_key
|
|
SEQ_IN_INDEX 1
|
|
COLUMN_NAME a
|
|
COLLATION A
|
|
CARDINALITY 1
|
|
SUB_PART NULL
|
|
PACKED NULL
|
|
NULLABLE YES
|
|
INDEX_TYPE BTREE
|
|
COMMENT
|
|
INDEX_COMMENT
|
|
IGNORED NO
|
|
TRUNCATE TABLE test_innodb_stats;
|
|
INSERT INTO test_innodb_stats (a) VALUES (1), (1), (1);
|
|
ANALYZE TABLE test_innodb_stats;
|
|
Table Op Msg_type Msg_text
|
|
test.test_innodb_stats analyze status OK
|
|
SELECT
|
|
stat_name,
|
|
stat_value,
|
|
sample_size,
|
|
stat_description
|
|
FROM mysql.innodb_index_stats
|
|
WHERE
|
|
database_name = DATABASE() AND
|
|
table_name = 'test_innodb_stats' AND
|
|
index_name = 'a_key' AND
|
|
stat_name IN ('n_diff_pfx01', 'n_diff_pfx02', 'n_leaf_pages', 'size')
|
|
ORDER BY stat_name;
|
|
stat_name n_diff_pfx01
|
|
stat_value 1
|
|
sample_size 1
|
|
stat_description a
|
|
stat_name n_diff_pfx02
|
|
stat_value 3
|
|
sample_size 1
|
|
stat_description a,DB_ROW_ID
|
|
stat_name n_leaf_pages
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of leaf pages in the index
|
|
stat_name size
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of pages in the index
|
|
FLUSH TABLE test_innodb_stats;
|
|
SELECT * FROM information_schema.statistics
|
|
WHERE table_name = 'test_innodb_stats';
|
|
TABLE_CATALOG def
|
|
TABLE_SCHEMA test
|
|
TABLE_NAME test_innodb_stats
|
|
NON_UNIQUE 1
|
|
INDEX_SCHEMA test
|
|
INDEX_NAME a_key
|
|
SEQ_IN_INDEX 1
|
|
COLUMN_NAME a
|
|
COLLATION A
|
|
CARDINALITY 1
|
|
SUB_PART NULL
|
|
PACKED NULL
|
|
NULLABLE YES
|
|
INDEX_TYPE BTREE
|
|
COMMENT
|
|
INDEX_COMMENT
|
|
IGNORED NO
|
|
TRUNCATE TABLE test_innodb_stats;
|
|
INSERT INTO test_innodb_stats (a) VALUES (1), (1), (1), (1), (1), (1), (1), (1), (1), (1);
|
|
ANALYZE TABLE test_innodb_stats;
|
|
Table Op Msg_type Msg_text
|
|
test.test_innodb_stats analyze status OK
|
|
SELECT
|
|
stat_name,
|
|
stat_value,
|
|
sample_size,
|
|
stat_description
|
|
FROM mysql.innodb_index_stats
|
|
WHERE
|
|
database_name = DATABASE() AND
|
|
table_name = 'test_innodb_stats' AND
|
|
index_name = 'a_key' AND
|
|
stat_name IN ('n_diff_pfx01', 'n_diff_pfx02', 'n_leaf_pages', 'size')
|
|
ORDER BY stat_name;
|
|
stat_name n_diff_pfx01
|
|
stat_value 1
|
|
sample_size 1
|
|
stat_description a
|
|
stat_name n_diff_pfx02
|
|
stat_value 10
|
|
sample_size 1
|
|
stat_description a,DB_ROW_ID
|
|
stat_name n_leaf_pages
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of leaf pages in the index
|
|
stat_name size
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of pages in the index
|
|
FLUSH TABLE test_innodb_stats;
|
|
SELECT * FROM information_schema.statistics
|
|
WHERE table_name = 'test_innodb_stats';
|
|
TABLE_CATALOG def
|
|
TABLE_SCHEMA test
|
|
TABLE_NAME test_innodb_stats
|
|
NON_UNIQUE 1
|
|
INDEX_SCHEMA test
|
|
INDEX_NAME a_key
|
|
SEQ_IN_INDEX 1
|
|
COLUMN_NAME a
|
|
COLLATION A
|
|
CARDINALITY 1
|
|
SUB_PART NULL
|
|
PACKED NULL
|
|
NULLABLE YES
|
|
INDEX_TYPE BTREE
|
|
COMMENT
|
|
INDEX_COMMENT
|
|
IGNORED NO
|
|
TRUNCATE TABLE test_innodb_stats;
|
|
INSERT INTO test_innodb_stats (a) VALUES (1), (2);
|
|
ANALYZE TABLE test_innodb_stats;
|
|
Table Op Msg_type Msg_text
|
|
test.test_innodb_stats analyze status OK
|
|
SELECT
|
|
stat_name,
|
|
stat_value,
|
|
sample_size,
|
|
stat_description
|
|
FROM mysql.innodb_index_stats
|
|
WHERE
|
|
database_name = DATABASE() AND
|
|
table_name = 'test_innodb_stats' AND
|
|
index_name = 'a_key' AND
|
|
stat_name IN ('n_diff_pfx01', 'n_diff_pfx02', 'n_leaf_pages', 'size')
|
|
ORDER BY stat_name;
|
|
stat_name n_diff_pfx01
|
|
stat_value 2
|
|
sample_size 1
|
|
stat_description a
|
|
stat_name n_diff_pfx02
|
|
stat_value 2
|
|
sample_size 1
|
|
stat_description a,DB_ROW_ID
|
|
stat_name n_leaf_pages
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of leaf pages in the index
|
|
stat_name size
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of pages in the index
|
|
FLUSH TABLE test_innodb_stats;
|
|
SELECT * FROM information_schema.statistics
|
|
WHERE table_name = 'test_innodb_stats';
|
|
TABLE_CATALOG def
|
|
TABLE_SCHEMA test
|
|
TABLE_NAME test_innodb_stats
|
|
NON_UNIQUE 1
|
|
INDEX_SCHEMA test
|
|
INDEX_NAME a_key
|
|
SEQ_IN_INDEX 1
|
|
COLUMN_NAME a
|
|
COLLATION A
|
|
CARDINALITY 2
|
|
SUB_PART NULL
|
|
PACKED NULL
|
|
NULLABLE YES
|
|
INDEX_TYPE BTREE
|
|
COMMENT
|
|
INDEX_COMMENT
|
|
IGNORED NO
|
|
TRUNCATE TABLE test_innodb_stats;
|
|
INSERT INTO test_innodb_stats (a) VALUES (1), (1), (2);
|
|
ANALYZE TABLE test_innodb_stats;
|
|
Table Op Msg_type Msg_text
|
|
test.test_innodb_stats analyze status OK
|
|
SELECT
|
|
stat_name,
|
|
stat_value,
|
|
sample_size,
|
|
stat_description
|
|
FROM mysql.innodb_index_stats
|
|
WHERE
|
|
database_name = DATABASE() AND
|
|
table_name = 'test_innodb_stats' AND
|
|
index_name = 'a_key' AND
|
|
stat_name IN ('n_diff_pfx01', 'n_diff_pfx02', 'n_leaf_pages', 'size')
|
|
ORDER BY stat_name;
|
|
stat_name n_diff_pfx01
|
|
stat_value 2
|
|
sample_size 1
|
|
stat_description a
|
|
stat_name n_diff_pfx02
|
|
stat_value 3
|
|
sample_size 1
|
|
stat_description a,DB_ROW_ID
|
|
stat_name n_leaf_pages
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of leaf pages in the index
|
|
stat_name size
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of pages in the index
|
|
FLUSH TABLE test_innodb_stats;
|
|
SELECT * FROM information_schema.statistics
|
|
WHERE table_name = 'test_innodb_stats';
|
|
TABLE_CATALOG def
|
|
TABLE_SCHEMA test
|
|
TABLE_NAME test_innodb_stats
|
|
NON_UNIQUE 1
|
|
INDEX_SCHEMA test
|
|
INDEX_NAME a_key
|
|
SEQ_IN_INDEX 1
|
|
COLUMN_NAME a
|
|
COLLATION A
|
|
CARDINALITY 3
|
|
SUB_PART NULL
|
|
PACKED NULL
|
|
NULLABLE YES
|
|
INDEX_TYPE BTREE
|
|
COMMENT
|
|
INDEX_COMMENT
|
|
IGNORED NO
|
|
TRUNCATE TABLE test_innodb_stats;
|
|
INSERT INTO test_innodb_stats (a) VALUES (1), (2), (3);
|
|
ANALYZE TABLE test_innodb_stats;
|
|
Table Op Msg_type Msg_text
|
|
test.test_innodb_stats analyze status OK
|
|
SELECT
|
|
stat_name,
|
|
stat_value,
|
|
sample_size,
|
|
stat_description
|
|
FROM mysql.innodb_index_stats
|
|
WHERE
|
|
database_name = DATABASE() AND
|
|
table_name = 'test_innodb_stats' AND
|
|
index_name = 'a_key' AND
|
|
stat_name IN ('n_diff_pfx01', 'n_diff_pfx02', 'n_leaf_pages', 'size')
|
|
ORDER BY stat_name;
|
|
stat_name n_diff_pfx01
|
|
stat_value 3
|
|
sample_size 1
|
|
stat_description a
|
|
stat_name n_diff_pfx02
|
|
stat_value 3
|
|
sample_size 1
|
|
stat_description a,DB_ROW_ID
|
|
stat_name n_leaf_pages
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of leaf pages in the index
|
|
stat_name size
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of pages in the index
|
|
FLUSH TABLE test_innodb_stats;
|
|
SELECT * FROM information_schema.statistics
|
|
WHERE table_name = 'test_innodb_stats';
|
|
TABLE_CATALOG def
|
|
TABLE_SCHEMA test
|
|
TABLE_NAME test_innodb_stats
|
|
NON_UNIQUE 1
|
|
INDEX_SCHEMA test
|
|
INDEX_NAME a_key
|
|
SEQ_IN_INDEX 1
|
|
COLUMN_NAME a
|
|
COLLATION A
|
|
CARDINALITY 3
|
|
SUB_PART NULL
|
|
PACKED NULL
|
|
NULLABLE YES
|
|
INDEX_TYPE BTREE
|
|
COMMENT
|
|
INDEX_COMMENT
|
|
IGNORED NO
|
|
TRUNCATE TABLE test_innodb_stats;
|
|
INSERT INTO test_innodb_stats (a) VALUES (1), (1), (2), (3), (3);
|
|
ANALYZE TABLE test_innodb_stats;
|
|
Table Op Msg_type Msg_text
|
|
test.test_innodb_stats analyze status OK
|
|
SELECT
|
|
stat_name,
|
|
stat_value,
|
|
sample_size,
|
|
stat_description
|
|
FROM mysql.innodb_index_stats
|
|
WHERE
|
|
database_name = DATABASE() AND
|
|
table_name = 'test_innodb_stats' AND
|
|
index_name = 'a_key' AND
|
|
stat_name IN ('n_diff_pfx01', 'n_diff_pfx02', 'n_leaf_pages', 'size')
|
|
ORDER BY stat_name;
|
|
stat_name n_diff_pfx01
|
|
stat_value 3
|
|
sample_size 1
|
|
stat_description a
|
|
stat_name n_diff_pfx02
|
|
stat_value 5
|
|
sample_size 1
|
|
stat_description a,DB_ROW_ID
|
|
stat_name n_leaf_pages
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of leaf pages in the index
|
|
stat_name size
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of pages in the index
|
|
FLUSH TABLE test_innodb_stats;
|
|
SELECT * FROM information_schema.statistics
|
|
WHERE table_name = 'test_innodb_stats';
|
|
TABLE_CATALOG def
|
|
TABLE_SCHEMA test
|
|
TABLE_NAME test_innodb_stats
|
|
NON_UNIQUE 1
|
|
INDEX_SCHEMA test
|
|
INDEX_NAME a_key
|
|
SEQ_IN_INDEX 1
|
|
COLUMN_NAME a
|
|
COLLATION A
|
|
CARDINALITY 5
|
|
SUB_PART NULL
|
|
PACKED NULL
|
|
NULLABLE YES
|
|
INDEX_TYPE BTREE
|
|
COMMENT
|
|
INDEX_COMMENT
|
|
IGNORED NO
|
|
TRUNCATE TABLE test_innodb_stats;
|
|
INSERT INTO test_innodb_stats (a) VALUES (1), (2), (3), (4), (5), (1), (2), (3), (4), (5);
|
|
ANALYZE TABLE test_innodb_stats;
|
|
Table Op Msg_type Msg_text
|
|
test.test_innodb_stats analyze status OK
|
|
SELECT
|
|
stat_name,
|
|
stat_value,
|
|
sample_size,
|
|
stat_description
|
|
FROM mysql.innodb_index_stats
|
|
WHERE
|
|
database_name = DATABASE() AND
|
|
table_name = 'test_innodb_stats' AND
|
|
index_name = 'a_key' AND
|
|
stat_name IN ('n_diff_pfx01', 'n_diff_pfx02', 'n_leaf_pages', 'size')
|
|
ORDER BY stat_name;
|
|
stat_name n_diff_pfx01
|
|
stat_value 5
|
|
sample_size 1
|
|
stat_description a
|
|
stat_name n_diff_pfx02
|
|
stat_value 10
|
|
sample_size 1
|
|
stat_description a,DB_ROW_ID
|
|
stat_name n_leaf_pages
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of leaf pages in the index
|
|
stat_name size
|
|
stat_value 1
|
|
sample_size NULL
|
|
stat_description Number of pages in the index
|
|
FLUSH TABLE test_innodb_stats;
|
|
SELECT * FROM information_schema.statistics
|
|
WHERE table_name = 'test_innodb_stats';
|
|
TABLE_CATALOG def
|
|
TABLE_SCHEMA test
|
|
TABLE_NAME test_innodb_stats
|
|
NON_UNIQUE 1
|
|
INDEX_SCHEMA test
|
|
INDEX_NAME a_key
|
|
SEQ_IN_INDEX 1
|
|
COLUMN_NAME a
|
|
COLLATION A
|
|
CARDINALITY 5
|
|
SUB_PART NULL
|
|
PACKED NULL
|
|
NULLABLE YES
|
|
INDEX_TYPE BTREE
|
|
COMMENT
|
|
INDEX_COMMENT
|
|
IGNORED NO
|