在优化之前需要对索引稍微的了解一下。可以以下连接进行查看https://blog.csdn.net/assassinsshadow/article/details/79956820
sql优化的一般步骤:
通过show status 命令了解了解SQL的执行效率。
通过explain分析低效SQL的执行计划
如图:
重要的列进行说明:
select_type:表示select的类型,常见的取值有SIMPLE,PRIMARY,UNION,SUBQUERY
table:输出结果集的表。
type:表示mysql在表中找到所需行的方式,或者叫访问类型。
ALL, index,range, ref , eq_ref, const,system, NULL
从左至右,性能越来越好。
通过show profile 分析sql
常用SQL优化
- 优化insert语句
如果插入行数据较多,尽量使用insert into test values(1,2),(1,3),(1,4) - 优化order by语句
where条件和order by 尽量使用同一个索引 - 优化group by
可以使用order by null 禁止排序 - 优化or
or只对单个字段的索引有效果,对组合索引无效 - 优化分页查询
第一种思路:根据索引分页,通过查询到的索引结果返回分页数据
第二种思路:where + order by + limit (前提是需要一个自增的唯一标识符) - 使用SQL提示
use index //使用索引
ignore index //忽略索引
force index //强制使用索引
常用SQL技巧
1. 正则表达式
语法:
2. 用bit group function做统计
文章参考: