当使用索引查询是成本超过80%时,会使用全表扫描。
in 查询:
in的条件不能超过200个的原因:当in中的条件少于200时,mysql会使用范围查询,根据最小值和最大值进行查询。当超过200个,mysql会使用SHOW INDEX FROM 表名 的语法,进行估算
根据索引查询出不重复的值种类,然后与in中的条件进行相乘。结果不是很准。
查询优化器,还是先计算全表扫描的成本。
对于null值:
1.null值代表一个未知的值,独一无二的
2.所有的null都表示一个值,一样的,认为是最小的(mysql中默认的)
3.认为null是没有意思,统计的时候忽略null值。
is null 可以使用索引,is not null 是不能使用索引的
mysql中的联合索引排序,利用最左前原则
a b c联合索引:where a b c是可以用到索引的
where a order by b c也可以用到索引
group by:
先进行排序然后分组
where a group by b c效率最快,