1.哪些情况不要创建索引
哪些情况不要创建索引
1)表记录太少
300万数据时MySQL性能就开始下降了,这时就可以开始开始优化了
2)经常增删改的表
提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。
因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件
3)where条件里用不到的字段不创建索引
2.最左匹配原则
过滤条件要使用索引必须按照索引建立时的顺序,依次满足,一旦跳过某个字段,索引后面的字段都无法被使用。同时遇到范围查询(>、<、between、like)就会停止匹配。
3.包含 order by 和 group by 的sql语句,应该怎么使用索引
order by
无过滤 不索引 顺序错,必排序 方向反 必排序
ORDER BY子句,尽量使用Index方式排序,避免使用FileSort方式排序
group by
group by 先排序再分组,遵照索引建的最佳左前缀法则
当无法使用索引列,增大max_length_for_sort_data和sort_buffer_size参数的设置
where高于having,能写在where限定的条件就不要写在having中了
group by没有过滤条件,也可以用上索引。Order By 必须有过滤条件才能使用上索引。