ANALYZEå½ä»¤ä¸»è¦å¯¹è¡¨å key distribution åæï¼è¯æ³å¦ä¸ï¼
ANALYZE [NO_WRITE_TO_BINLOG | LOCAL]
  TABLE tbl_name [, tbl_name] ...
ANALYZE TABLE ä½ç¨çå¯¹è±¡æ¯ InnoDB, NDB, å MyISAM 表ï¼å¯¹è§å¾ä¸èµ·ä½ç¨ãå¨åææé´ï¼ä¼å¯¹è¡¨å ä¸read lock(InnoDB, MyISAM) , 妿èªä»ä¸æ¬¡åæä¹åï¼è¡¨æ²¡æåçååï¼åä¸ä¼è¢«å次åæã
key distributionå¯ä»¥è®¤ä¸ºæ¯è¡¨çâç»è®¡ä¿¡æ¯âï¼å®å³å®è¡¨åjoinçæ¶åçjoin顺åºï¼ä»¥åå¨æä¸ªæ¥è¯¢ä¸æ¯å¦ä¼ç¨å°æä¸ªç´¢å¼ãè¦æ¥çkey distributionï¼å¯ä»¥ä½¿ç¨ SHOW INDEX æè æ¥è¯¢ INFORMATION_SCHEMA.STATISTICS 表ï¼ä¸¤è æ¯ä¸æ ·çã
ä¸é¢ç示ä¾é¦å å±ç¤ºäºä¸¤ç§æ¥çkey distributionçæ¹æ³ï¼çå° Cardinality ä¸åç¡®ï¼å¨åäºä¸ä¸ªANALYZE TABLEçæä½ä¹åï¼åå¾åç¡®ãCardinality çæææ¯åºæ°ï¼ä¹å°±æ¯ä¸éå¤çè®°å½çæ°ç®ï¼å¯¹äºç´¢å¼æ¥è®²ï¼Cardinalityè¶å¤§è¶å¥½ï¼æå¥½æ¥è¿çå®çè®°å½æ°ï¼å¦æCardinality太å°ï¼åç´¢å¼å°±å¤±å»æä¹äºã
mysql> show create table t1 \G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`id` char(10) NOT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx1` (`age`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
mysql> select * from t1;
+-------+------+
| id | age |
+-------+------+
| aaaaa | 12 |
| fff | 12 |
| ggg | 12 |
| hhh | 12 |
| bbb | 13 |
| iii | 13 |
| cc | 14 |
| dd | 15 |
| eee | 16 |
+-------+------+
9 rows in set (0.00 sec)
mysql> SHOW index from t1 \G
*************************** 1. row ***************************
Table: t1
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: id
Collation: A
Cardinality: 9
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
*************************** 2. row ***************************
Table: t1
Non_unique: 1
Key_name: idx1
Seq_in_index: 1
Column_name: age
Collation: A
Cardinality: 9
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
2 rows in set (0.00 sec)
mysql> select * from INFORMATION_SCHEMA.STATISTICS where TABLE_NAME like 't1' \G
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test1
TABLE_NAME: t1
NON_UNIQUE: 0
INDEX_SCHEMA: test1
INDEX_NAME: PRIMARY
SEQ_IN_INDEX: 1
COLUMN_NAME: id
COLLATION: A
CARDINALITY: 9
SUB_PART: NULL
PACKED: NULL
NULLABLE:
INDEX_TYPE: BTREE
COMMENT:
INDEX_COMMENT:
*************************** 2. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test1
TABLE_NAME: t1
NON_UNIQUE: 1
INDEX_SCHEMA: test1
INDEX_NAME: idx1
SEQ_IN_INDEX: 1
COLUMN_NAME: age
COLLATION: A
CARDINALITY: 9 <----------ä¸å
SUB_PART: NULL
PACKED: NULL
NULLABLE: YES
INDEX_TYPE: BTREE
COMMENT:
INDEX_COMMENT:
2 rows in set (0.00 sec)
mysql> ANALYZE TABLE t1;
+----------+---------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+----------+---------+----------+----------+
| test1.t1 | analyze | status | OK |
+----------+---------+----------+----------+
1 row in set (0.02 sec)
mysql> SHOW index from t1 \G
*************************** 1. row ***************************
Table: t1
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: id
Collation: A
Cardinality: 9
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
*************************** 2. row ***************************
Table: t1
Non_unique: 1
Key_name: idx1
Seq_in_index: 1
Column_name: age
Collation: A
Cardinality: 5 <----------ANALYZEä¹åï¼è·å¾äºåç¡®çæ°æ®
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
2 rows in set (0.00 sec)