浅谈mysql索引优化
mysql优化分为很多种:包括基础设施优化、 配置优化、表结构优化、sql语句优化等,其中sql语句优化的成本是最低的,因此我们优化mysql时最先考虑的就是mysql语句优化。说到mysql语句优化,就离不开mysql索引,mysql优化器也会对sql与进行大量的优化,当然这个也是依据我们的配置来的。
mysql索引优化的种类
where条件优化、范围优化、索引合并优化、哈希连接优化、索引条件下推优化(ICP)等。
where条件优化
sql优化器会根据联合索引的顺序对where条件进行重排序;
sql优化器会将多个条件合并,如:where b>2 and b=5 and b<6 or b>3 and b=4 会被优化为where b>2,我们只需要按照易于阅读的方式写sql即可。
执行计划时,在extra字段里的:using where,可能指的就是这个,即用到了条件过滤。
范围优化
如果用了范围优化,type字段里是ref,extra字段里可能是:Using index for skip scan,前提是系统变量中设置:skip_scan=on。 range_optimizer_max_mem_size 这个配置可以设置优化器执行范围优化时可用 的内存大小,设置0则无限制。
索引合并优化
如果用到了索引合并优化,则在extra中值为:Using intersect、Using union、