1. 统计数据条数用count函数时,应该用count(1)或count(*)或count(索引字段) 不可以用普通字段,用了普通字段走了全表扫描
explain select count(datime) from tb_ipinfos;
Using index:所需数据只需在 Index 即可全部获得,不须要再到表中取数据。
2. select 字段时,字段最好只写那些索引字段,即使没有where,也会走索引
如果我加上了非索引字段或者用*,就直接全表扫描了
3. 即使select用了非索引字段或者用*,只要where有用索引字段查,就还是走索引
3.1 发现有个有意思的,假如我用where查索引字段时,该字段值不存在,它会通过分析直接告诉你该值不存在,然后就不去查了,MySQL Query Optimizer 通过收集到的统计信息判断出不可能存在结果
3.2 字段值存在就走索引查
name也是一个索引字段,type为ref,表示有多个匹配行(因为有很多条数据都是叫wcb),Extra为Using index condition 会先条件过滤索引,过滤完索引后找到所有符合索引条件的数据行,随后用 WHERE 子句中的其他条件去过滤这些数据行