誰かが違いを知っていますか
インデックスの使用
と
whereを使用する; インデックスの使用
mysqlのexplain出力(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> Explain 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> Explain 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)
最初のケースでは追加フィールドに「インデックスの使用」しかなく、2番目のケースでは「どこで使用;インデックスを使用」である理由を誰かが知っていますか?ケースの違いは、最初のケースは整数でWHEREを実行し、2番目のケースはvarchar(50)フィールドで実行されることです。しかし、なぜそれが重要なのですか?
ご協力いただきありがとうございます!