group by 实质上是先排序后分组,符合最佳左前缀原则
where高于having,能写在where限定的条件就不要写在having中了
# 查看是否开启:slow_query_log_file 表示 记录慢查询日志的文件
show variables like '%slow_query_log%';
# 开启,只对当前数据库生效,重启后失效
set global slow_query_log=1;
# 查看判断慢查询时间阙值
show variables like 'long_query_time%';
show global variables like 'long_query_time%';
# 设置阙值,如果使用第一条查询阙值的语句需要重新连接或重开一个会话才能看到修改值
set global long_query_time=3;
MySQL 提供的可以用来分析当前会话中语句执行的资源消耗情况,默认关闭
# 查看是否开启
show variables like 'profiling';
# 开启,只对当前数据库生效,重启后失效
set profiling=on;
# 查看执行语句的id
show profiles;
# 查看报告单,即执行细节分析表,#{id}来自上述查询结果中你想要查看的SQL语句的id
show profile cpu,block io for query #{id};
较为严重的情况:
# 开启
general_log=1
# 记录日志文件的路径
general_log_file=/path/logfile
# 输出格式
log_output=FILE
# 开启
set global general_log=1;
set global log_output='TABLE';
# 查看
select * from mysql.general_log
创建存储过程:create procedure p_name(参数列表)
调用存储过程:call p_name(参数列表)