有谁知道之间的区别
使用索引
和
使用哪里;使用索引
在 mysql 的解释输出中(在 Extra 中)?
再生产:
CREATE TABLE `tmp_t1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`a` int(11) NOT NULL DEFAULT '0',
`b` varchar(50) CHARACTER SET latin1 NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `k1` (`a`),
KEY `k2` (`b`)
) ENGINE=InnoDB AUTO_INCREMENT=5;
insert into tmp_t1 (a,b) values (1,'b1'), (1, 'b2'), (2, 'b3');
mysql> 解释 select count(1) from tmp_t1 where a=1 \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: tmp_t1
type: ref
possible_keys: k2,kz
key: kz
key_len: 4
ref: const
rows: 3
Extra: Using index
1 row in set (0.11 sec)
mysql> 解释 select count(1) from tmp_t1 where b='b1' \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: tmp_t1
type: ref
possible_keys: k3
key: k3
key_len: 52
ref: const
rows: 2
Extra: Using where; Using index
1 row in set (0.00 sec)
有谁知道为什么在第一种情况下额外字段中只有“使用索引”,而在第二种情况下是“使用 where;使用索引”?案例之间的区别在于,第一个案例在整数上运行 WHERE,而第二个案例在 varchar(50) 字段上执行。但是这有什么关系??
谢谢你的帮助!